From 16a9037eb19ceffcfa464d10939c33c19d4baf0b Mon Sep 17 00:00:00 2001
From: LukeZGD <26163116+LukeZGD@users.noreply.github.com>
Date: Tue, 20 Feb 2024 18:10:35 +0800
Subject: [PATCH] Some changes
---
restore.sh | 91 +++++++++++++++++++++++++-----------------------------
1 file changed, 42 insertions(+), 49 deletions(-)
diff --git a/restore.sh b/restore.sh
index 54124ea..6ccc869 100755
--- a/restore.sh
+++ b/restore.sh
@@ -323,27 +323,27 @@ install_depends() {
fi
if [[ $distro == "arch" ]]; then
- sudo pacman -Sy --noconfirm --needed base-devel ca-certificates ca-certificates-mozilla curl libimobiledevice openssh pyenv python udev unzip usbmuxd usbutils vim zenity zip
+ sudo pacman -Sy --noconfirm --needed base-devel ca-certificates ca-certificates-mozilla curl libimobiledevice libxml2 openssh pyenv python udev unzip usbmuxd usbutils vim zenity zip zstd
elif [[ $distro == "debian" ]]; then
if [[ -n $ubuntu_ver ]]; then
sudo add-apt-repository -y universe
fi
sudo apt update
- sudo apt install -y build-essential ca-certificates curl git libimobiledevice6 libirecovery-common libssl3 libssl-dev openssh-client patch python3 unzip usbmuxd usbutils xxd zenity zip zlib1g-dev
+ sudo apt install -y build-essential ca-certificates curl git libimobiledevice6 libirecovery-common libssl3 libssl-dev libxml2 libzstd1 openssh-client patch python3 unzip usbmuxd usbutils xxd zenity zip zlib1g-dev
sudo systemctl enable --now udev systemd-udevd usbmuxd 2>/dev/null
elif [[ $distro == "fedora" ]]; then
- sudo dnf install -y ca-certificates git libimobiledevice openssl openssl-devel patch python3 systemd udev usbmuxd vim-common zenity zip zlib-devel
+ sudo dnf install -y ca-certificates git libimobiledevice libxml2 libzstd openssl openssl-devel patch python3 systemd udev usbmuxd vim-common zenity zip zlib-devel
sudo dnf group install -y "C Development Tools and Libraries"
sudo ln -sf /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-certificates.crt
elif [[ $distro == "opensuse" ]]; then
- sudo zypper -n install ca-certificates curl git libimobiledevice-1_0-6 libopenssl-3-devel openssl-3 patch pyenv python3 usbmuxd unzip vim zenity zip zlib-devel
+ sudo zypper -n install ca-certificates curl git libimobiledevice-1_0-6 libopenssl-3-devel libxml2 libzstd1 openssl-3 patch pyenv python3 usbmuxd unzip vim zenity zip zlib-devel
sudo zypper -n install -t pattern devel_basis
elif [[ $distro == "gentoo" ]]; then
- sudo emerge -av app-misc/ca-certificates net-misc/curl libimobiledevice openssh python udev unzip usbmuxd usbutils vim zenity zip
+ sudo emerge -av app-arch/zstd app-misc/ca-certificates dev-libs/libxml2 libimobiledevice net-misc/curl openssh python udev unzip usbmuxd usbutils vim zenity zip
elif [[ $platform == "macos" ]]; then
print "* Legacy iOS Kit will be installing dependencies and setting up permissions of tools"
@@ -721,6 +721,7 @@ device_get_info() {
esac
fi
+ all_flash="Firmware/all_flash/all_flash.${device_model}ap.production"
device_fw_dir="../resources/firmware/$device_type"
if [[ -s $device_fw_dir/hwmodel ]]; then
device_model="$(cat $device_fw_dir/hwmodel)"
@@ -2004,7 +2005,6 @@ ipsw_prepare_jailbreak() {
local JBFiles=()
local JBFiles2=()
local daibutsu
- local all_flash="Firmware/all_flash/all_flash.${device_model}ap.production"
local iv
local key
@@ -2180,7 +2180,7 @@ ipsw_prepare_keys() {
;;
"iBoot" )
- echo "$compFileFirmware/all_flash/all_flash.${device_model}ap.production/$nameIV$ivKey$key" >> $NewPlist
+ echo "$compFile$all_flash/$nameIV$ivKey$key" >> $NewPlist
echo "Patch$comp.${device_model}ap.RELEASE.patch" >> $NewPlist
;;
@@ -2189,7 +2189,7 @@ ipsw_prepare_keys() {
;;
"RestoreDeviceTree" | "RestoreLogo" )
- echo "$compFileFirmware/all_flash/all_flash.${device_model}ap.production/$nameIV$ivKey$keyDecryptPathDowngrade/$comp" >> $NewPlist
+ echo "$compFile$all_flash/$nameIV$ivKey$keyDecryptPathDowngrade/$comp" >> $NewPlist
;;
"RestoreKernelCache" )
@@ -2229,7 +2229,7 @@ ipsw_prepare_paths() {
fw_key="$device_fw_key_base"
fi
local name=$(echo $fw_key | $jq -j '.keys[] | select(.image | startswith("'$getcomp'")) | .filename')
- local str="$compFileFirmware/all_flash/all_flash.${device_model}ap.production/"
+ local str="$compFile$all_flash/"
local str2
local logostuff
if [[ $2 == "target" ]]; then
@@ -2395,7 +2395,7 @@ ipsw_prepare_bundle() {
mkdir -p $FirmwareBundle
log "Generating firmware bundle for $device_type-$vers ($build) $1..."
- unzip -o -j "$ipsw_p.ipsw" Firmware/all_flash/all_flash.${device_model}ap.production/manifest
+ unzip -o -j "$ipsw_p.ipsw" $all_flash/manifest
mv manifest $FirmwareBundle/
local ramdisk_name=$(echo "$key" | $jq -j '.keys[] | select(.image | startswith("RestoreRamdisk")) | .filename')
local RamdiskIV=$(echo "$key" | $jq -j '.keys[] | select(.image | startswith("RestoreRamdisk")) | .iv')
@@ -2840,7 +2840,6 @@ patch_iboot() {
local iboot_key=$(echo $device_fw_key | $jq -j '.keys[] | select(.image | startswith("iBoot")) | .key')
local ibec
local rsa="--rsa"
- local all_flash="Firmware/all_flash/all_flash.${device_model}ap.production"
log "Patch iBoot: $*"
if [[ $device_type == "iPad1,1" || $device_type == "iPhone5"* ]]; then
ibec=1
@@ -2879,8 +2878,7 @@ ipsw_patch_file() {
ipsw_prepare_ios4multipart() {
local JBFiles=()
ipsw_custom_part2="${device_type}_${device_target_vers}_${device_target_build}_CustomNP-${device_ecid}"
- local all_flash2="Firmware/all_flash/all_flash.${device_model}ap.production"
- local all_flash="$ipsw_custom_part2/$all_flash2"
+ local all_flash2="$ipsw_custom_part2/$all_flash"
local ExtraArgs2="--boot-partition --boot-ramdisk --logo4 --433"
local iboot
@@ -2892,7 +2890,7 @@ ipsw_prepare_ios4multipart() {
fi
log "Preparing NOR flash IPSW..."
- mkdir -p $ipsw_custom_part2/Firmware/dfu $ipsw_custom_part2/Downgrade $all_flash
+ mkdir -p $ipsw_custom_part2/Firmware/dfu $ipsw_custom_part2/Downgrade $all_flash2
local comps=()
local name
@@ -2914,7 +2912,7 @@ ipsw_prepare_ios4multipart() {
key=$(echo $device_fw_key_temp | $jq -j '.keys[] | select(.image | startswith("'$getcomp'")) | .key')
case $getcomp in
"iBSS" | "iBEC" ) path="Firmware/dfu/";;
- "DeviceTree" ) path="Firmware/all_flash/all_flash.${device_model}ap.production/";;
+ "DeviceTree" ) path="$all_flash/";;
* ) path="";;
esac
log "$getcomp"
@@ -2994,11 +2992,11 @@ ipsw_prepare_ios4multipart() {
"$dir/xpwntool" ramdisk.dec $ipsw_custom_part2/$ramdisk_name -t RestoreRamdisk.orig
log "Extract all_flash from $device_base_vers base"
- unzip -o -j "$ipsw_base_path.ipsw" Firmware/all_flash/\* -d $all_flash
+ unzip -o -j "$ipsw_base_path.ipsw" Firmware/all_flash/\* -d $all_flash2
log "Add $device_target_vers DeviceTree to all_flash"
- rm $all_flash/DeviceTree.${device_model}ap.img3
- unzip -o -j "$ipsw_path.ipsw" $all_flash2/DeviceTree.${device_model}ap.img3 -d $all_flash
+ rm $all_flash2/DeviceTree.${device_model}ap.img3
+ unzip -o -j "$ipsw_path.ipsw" $all_flash2/DeviceTree.${device_model}ap.img3 -d $all_flash2
if [[ $ipsw_verbose == 1 ]]; then
ExtraArgs2+=" -b -v"
@@ -3010,29 +3008,29 @@ ipsw_prepare_ios4multipart() {
iboot="iboot"
else
log "Add $device_target_vers iBoot to all_flash"
- mv iBoot $all_flash/iBoot4.img3
- echo "iBoot4.img3" >> $all_flash/manifest
+ mv iBoot $all_flash2/iBoot4.img3
+ echo "iBoot4.img3" >> $all_flash2/manifest
fi
log "Add APTicket to all_flash"
cat "$shsh_path" | sed '64,$d' | sed -ne '//,/<\/data>/p' | sed -e "s///" | sed "s/<\/data>//" | tr -d '[:space:]' | base64 --decode > apticket.der
- "$dir/xpwntool" apticket.der $all_flash/applelogoT.img3 -t ../resources/firmware/src/scab_template.img3
- echo "applelogoT.img3" >> $all_flash/manifest
+ "$dir/xpwntool" apticket.der $all_flash2/applelogoT.img3 -t ../resources/firmware/src/scab_template.img3
+ echo "applelogoT.img3" >> $all_flash2/manifest
log "AppleLogo"
local logo_name="$(echo $device_fw_key | $jq -j '.keys[] | select(.image == "AppleLogo") | .filename')"
- unzip -o -j "$ipsw_path.ipsw" $all_flash2/$logo_name
+ unzip -o -j "$ipsw_path.ipsw" $all_flash/$logo_name
echo "0000010: 3467" | xxd -r - $logo_name
echo "0000020: 3467" | xxd -r - $logo_name
log "Add AppleLogo to all_flash"
if [[ $device_latest_vers == "5"* ]]; then
- mv $logo_name $all_flash/applelogo4.img3
- echo "applelogo4.img3" >> $all_flash/manifest
+ mv $logo_name $all_flash2/applelogo4.img3
+ echo "applelogo4.img3" >> $all_flash2/manifest
else
- sed '/applelogo/d' $all_flash/manifest > manifest
- rm $all_flash/manifest
+ sed '/applelogo/d' $all_flash2/manifest > manifest
+ rm $all_flash2/manifest
echo "$logo_name" >> manifest
- mv $logo_name manifest $all_flash/
+ mv $logo_name manifest $all_flash2/
fi
log "Creating $ipsw_custom_part2.ipsw..."
@@ -3073,7 +3071,7 @@ ipsw_prepare_ios4multipart() {
key=$(echo $device_fw_key_temp | $jq -j '.keys[] | select(.image | startswith("'$getcomp'")) | .key')
case $getcomp in
"iBSS" | "iBEC" ) path="Firmware/dfu/";;
- "DeviceTree" ) path="Firmware/all_flash/all_flash.${device_model}ap.production/";;
+ "DeviceTree" ) path="$all_flash/";;
* ) path="";;
esac
log "$getcomp"
@@ -3099,6 +3097,12 @@ ipsw_prepare_ios4multipart() {
"$dir/xpwntool" $getcomp.orig $getcomp.dec -iv $iv -k $key
;;
esac
+ if [[ $getcomp == "iB"* ]]; then
+ log "Patch $getcomp"
+ "$dir/iBoot32Patcher" $getcomp.dec $getcomp.patched --rsa --debug -b "rd=md0 -v nand-enable-reformat=1 amfi=0xff cs_enforcement_disable=1"
+ "$dir/xpwntool" $getcomp.patched ${path}$name -t $getcomp.orig
+ zip -r0 temp.ipsw ${path}$name
+ fi
done
log "Grow ramdisk"
@@ -3108,16 +3112,6 @@ ipsw_prepare_ios4multipart() {
"$dir/hfsplus" RestoreRamdisk.dec grow 18000000
fi
- log "Patch iBSS"
- "$dir/iBoot32Patcher" iBSS.dec iBSS.patched --rsa --debug -b "rd=md0 -v nand-enable-reformat=1 amfi=0xff cs_enforcement_disable=1"
- "$dir/xpwntool" iBSS.patched Firmware/dfu/iBSS.${device_model}ap.RELEASE.dfu -t iBSS.orig
- zip -r0 temp.ipsw Firmware/dfu/iBSS.${device_model}ap.RELEASE.dfu
-
- log "Patch iBEC"
- "$dir/iBoot32Patcher" iBEC.dec iBEC.patched --rsa --debug -b "rd=md0 -v nand-enable-reformat=1 amfi=0xff cs_enforcement_disable=1"
- "$dir/xpwntool" iBEC.patched Firmware/dfu/iBEC.${device_model}ap.RELEASE.dfu -t iBEC.orig
- zip -r0 temp.ipsw Firmware/dfu/iBEC.${device_model}ap.RELEASE.dfu
-
log "Patch ASR"
cp ../resources/firmware/FirmwareBundles/Down_${device_type}_${vers}_${build}.bundle/asr.patch .
ipsw_patch_file RestoreRamdisk.dec usr/sbin asr asr.patch
@@ -3263,7 +3257,7 @@ ipsw_prepare_ios4powder() {
fi
log "Applying iOS 4 patches"
- mkdir -p Firmware/all_flash/all_flash.${device_model}ap.production Firmware/dfu
+ mkdir -p $all_flash Firmware/dfu
log "Patch iBSS"
unzip -o -j "$ipsw_path.ipsw" Firmware/dfu/iBSS.${device_model}ap.RELEASE.dfu
local ibss_iv=$(echo $device_fw_key | $jq -j '.keys[] | select(.image | startswith("iBSS")) | .iv')
@@ -3282,16 +3276,16 @@ ipsw_prepare_ios4powder() {
"$dir/xpwntool" iBEC.patched Firmware/dfu/iBEC.${device_model}ap.RELEASE.dfu -t iBEC.orig
log "Patch AppleLogo"
local applelogo_name=$(echo "$device_fw_key" | $jq -j '.keys[] | select(.image | startswith("AppleLogo")) | .filename')
- unzip -o -j temp.ipsw Firmware/all_flash/all_flash.${device_model}ap.production/$applelogo_name
+ unzip -o -j temp.ipsw $all_flash/$applelogo_name
echo "0000010: 3467" | xxd -r - $applelogo_name
echo "0000020: 3467" | xxd -r - $applelogo_name
- mv $applelogo_name Firmware/all_flash/all_flash.${device_model}ap.production/$applelogo_name
+ mv $applelogo_name $all_flash/$applelogo_name
log "Add all to custom IPSW"
if [[ $device_type != "iPad1,1" ]]; then
- cp iBoot Firmware/all_flash/all_flash.${device_model}ap.production/iBoot2.${device_model}ap.RELEASE.img3
+ cp iBoot $all_flash/iBoot2.${device_model}ap.RELEASE.img3
fi
- zip -r0 temp.ipsw Firmware/all_flash/all_flash.${device_model}ap.production/* Firmware/dfu/*
+ zip -r0 temp.ipsw $all_flash/* Firmware/dfu/*
mv temp.ipsw "$ipsw_custom.ipsw"
}
@@ -3380,7 +3374,6 @@ ipsw_prepare_powder() {
[789]* ) :;;
* )
patch_iboot --logo
- local all_flash="Firmware/all_flash/all_flash.${device_model}ap.production"
mkdir -p $all_flash
mv iBoot*.img3 $all_flash
zip -r0 temp.ipsw $all_flash/iBoot*.img3
@@ -3393,7 +3386,7 @@ ipsw_prepare_powder() {
}
ipsw_prepare_patchcomp() {
- local path="Firmware/all_flash/all_flash.${device_model}ap.production"
+ local path="$all_flash"
local name="LLB.${device_model}ap.RELEASE"
local patch="../resources/firmware/FirmwareBundles/Down_${device_type}_${device_target_vers}_${device_target_build}.bundle"
local ext="img3"
@@ -4105,7 +4098,7 @@ device_ramdisk64() {
* ) path="";;
esac
if [[ $ios8 == 1 && $getcomp == "DeviceTree" ]]; then
- path+="all_flash.${device_model}ap.production/"
+ path="$all_flash/"
fi
if [[ -z $name ]]; then
local hwmodel
@@ -4281,7 +4274,7 @@ device_ramdisk() {
path="Firmware/all_flash/"
case $build_id in
14[EFG]* ) :;;
- * ) path+="all_flash.${device_model}ap.production/";;
+ * ) path="$all_flash/";;
esac
;;
* ) path="";;
@@ -6154,7 +6147,7 @@ restore_dfuipsw() {
iPad3,[456] ) llb="LLB.ipad3b.RELEASE.img3";;
esac
else
- all+="/all_flash.${device_model}ap.production"
+ all="$all_flash"
fi
mkdir -p $all
unzip -o -j temp.ipsw $all/$applelogo -d .