From aa3fe259cfd4f5eba1a48a26e8021cd71ca0478c Mon Sep 17 00:00:00 2001 From: edwin Date: Mon, 11 Sep 2023 22:00:07 -0400 Subject: [PATCH] fixing bugs, and updating dfuhelper --- binaries/Darwin/Kernel64Patcher | Bin 153574 -> 153734 bytes binaries/Linux/Kernel64Patcher | Bin 49512 -> 57960 bytes downr1n.sh | 258 ++++++++++++++++++++------------ 3 files changed, 163 insertions(+), 95 deletions(-) diff --git a/binaries/Darwin/Kernel64Patcher b/binaries/Darwin/Kernel64Patcher index 70532ced8ca647a14f836d1b58777650a37882e1..cf79a8bae48a3b0f81d90370ab8ca833f48f2dba 100755 GIT binary patch literal 153734 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 delta 16728 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 diff --git a/downr1n.sh b/downr1n.sh index 36d6977..4112418 100755 --- a/downr1n.sh +++ b/downr1n.sh @@ -29,9 +29,6 @@ if [ ! -d "ramdisk/" ]; then git clone https://github.com/dualra1n/ramdisk.git --depth 1 fi -if [ -e .downgraded ]; then - downgrade=1 -fi # ========= # Functions # ========= @@ -43,11 +40,7 @@ remote_cmd() { remote_cp() { sleep 1 - if [ "$downgrade" ]; then - "$dir"/sshpass -p 'alpine' rsync -rvz -e 'ssh -p 2222' "$@" - else - "$dir"/sshpass -p 'alpine' scp -r -o StrictHostKeyChecking=no -P2222 $@ - fi + "$dir"/sshpass -p 'alpine' scp -r -o StrictHostKeyChecking=no -P2222 $@ sleep 1 } @@ -76,11 +69,10 @@ iOS 15 - 14.0 downgrade tool ./downr1n --downgrade 15.7 (the ios of your device) Options: --downgrade downgrade tethered your device to ios 14. you can use --localboot or --fsboot in order to fix some problems if you had them --dfuhelper A helper to help get A11 devices into DFU mode from recovery mode - --jailbreak jailbreak with pogo. usage ./downr1n --jailbreak 14.8 - --taurine jailbreak with taurine. usage ./downr1n --jailbreak 14.3 --taurine + --jailbreak jailbreak with pogo. usage ./downr1n --jailbreak 14.8 + --taurine jailbreak with taurine. usage ./downr1n --jailbreak 14.3 --taurine --boot this boot the device. --dont-restore this will avoid the restore using futurerestore, this can be used if you wanted only create the boot files - --fixBoot that will boot the device using fsboot --debug Debug the script Subcommands: @@ -142,6 +134,9 @@ parse_arg() { dfuhelper) dfuhelper=1 ;; + clean) + clean=1 + ;; *) version="$1" ;; @@ -260,6 +255,11 @@ _wait() { } _dfuhelper() { + if [ "$(get_device_mode)" = "dfu" ]; then + echo "[*] Device already on dfu mode" + return; + fi + local step_one; deviceid=$( [ -z "$deviceid" ] && _info normal ProductType || echo $deviceid ) if [[ "$1" = 0x801* && "$deviceid" != *"iPad"* ]]; then @@ -289,8 +289,9 @@ _dfuhelper() { if [ "$(get_device_mode)" = "dfu" ]; then echo "[*] Device entered DFU!" else - echo "[-] Device did not enter DFU mode, rerun the script and try again" - exit; + echo "[-] Device did not enter DFU mode, try again" + _detect + _dfuhelper fi } @@ -318,23 +319,61 @@ _kill_if_running() { _runFuturerestore() { - cat </dev/null & + else + "$dir"/iproxy 2222 22 >/dev/null & + fi + sleep 1 + remote_cmd "/sbin/reboot" + _kill_if_running iproxy + _wait recovery + fi + + if [ "$(get_device_mode)" = "normal" ]; then + version=${version:-$(_info normal ProductVersion)} + arch=$(_info normal CPUArchitecture) + if [ "$arch" = "arm64e" ]; then + echo "[-] dualboot doesn't, and never will, work on non-checkm8 devices" + exit + fi + echo "Hello, $(_info normal ProductType) on $version!" + + echo "[*] Switching device into recovery mode..." + "$dir"/ideviceenterrecovery $(_info normal UniqueDeviceID) + _wait recovery + fi +} + _boot() { _pwn sleep 1 @@ -420,7 +459,7 @@ if [ "$os" = 'Linux' ]; then linux_cmds='lsusb' fi -for cmd in unzip python3 rsync git ssh scp killall sudo grep pgrep xz aria2c ${linux_cmds}; do +for cmd in unzip python3 rsync git ssh scp killall sudo grep pgrep xz ${linux_cmds}; do if ! command -v "${cmd}" > /dev/null; then echo "[-] Command '${cmd}' not installed, please install it!"; cmd_not_found=1 @@ -430,6 +469,38 @@ if [ "$cmd_not_found" = "1" ]; then exit 1 fi +#echo "[*] Checkin python version, i recommend install a python 10 earlier version to avoid problems" +# +#if command -v python3.8 &>/dev/null; then +# python3="python3.8" +#else +# python_version=$(python --version 2>&1 | awk '{print $2}') +# if [[ $python_version == "3.8" ]]; then +# python3="python" +# else +# echo "Python 3.10 or early is required for this script." +# read -p "Python 3.8 is not found. Do you want to install it? (y/n): " install_choice +# if [[ $install_choice == "y" ]]; then +# if [[ "$os" = "Darwin" ]]; then +# brew install python3.8 +# python3="python3.8" +# +# elif [ "$os" = "Linux" ]; then +# +# sudo apt-get install python3.8 +# python3="python3.8" +# else +# echo "Unsupported operating system. Please install Python 3.8 manually." +# exit 1 +# fi +# echo "Python 3.8 has been installed." +# else +# echo "Python 3.8 was not installed. Using the default 'python' executable. but pyimg4 has problem with python 11" +# python3="python" +# fi +# fi +#fi + # Check for pyimg4 if ! python3 -c 'import pkgutil; exit(not pkgutil.find_loader("fastapi") and not pkgutil.find_loader("aiohttp") and not pkgutil.find_loader("ujson") and not pkgutil.find_loader("wikitextparser") and not pkgutil.find_loader("uvicorn") and not pkgutil.find_loader("pyimg4"))'; then @@ -474,8 +545,8 @@ chmod +x "$dir"/* # Start # ============ -echo "downr1n | Version 1.0" -echo "Created by edwin, thanks sunst0rm, and all people creator of path file boot" +echo "downr1n | Version 3.0" +echo "Created by edwin, thanks palera1, and all people creator of path file boot" echo "" parse_cmdline "$@" @@ -485,7 +556,7 @@ if [ "$debug" = "1" ]; then fi if [ "$clean" = "1" ]; then - rm -rf work blobs/ boot/"$deviceid"/ ipsw/extracted .downgraded + rm -rf work blobs/ boot/"$deviceid"/ ipsw/extracted echo "[*] Removed the created boot files" exit fi @@ -534,19 +605,23 @@ if [ "$(get_device_mode)" = "normal" ]; then echo "Hello, $(_info normal ProductType) on $version!" echo "[*] Switching device into recovery mode..." - "$dir"/ideviceenterrecovery $(_info normal UniqueDeviceID) + if [ ! $("$dir"/ideviceenterrecovery $(_info normal UniqueDeviceID)) ]; then + echo "[/] if your device can't enter into recovery mode please try to force reboot and put it on recovery mode" + fi _wait recovery fi +_detect + # Grab more info echo "[*] Getting device info..." cpid=$(_info recovery CPID) model=$(_info recovery MODEL) deviceid=$(_info recovery PRODUCT) -echo "$cpid" -echo "$model" -echo "$deviceid" +echo "Detected cpid, your cpid is $cpid" +echo "Detected model, your model is $model" +echo "Detected deviceid, your deviceid is $deviceid" if [ "$dfuhelper" = "1" ]; then echo "[*] Running DFU helper" @@ -575,11 +650,12 @@ fi # extract ipsw # ========= -if [ ! -e ipsw/*.ipsw ]; then - echo "[*] Downloading ipsw, it may take few minutes." - aria2c -x16 -s16 -j16 "$ipswurl" - mv *.ipsw ipsw -fi +# sasa please update your downloader to use wget +#if [ ! -e "ipsw/*.ipsw" ]; then +# echo "[*] Downloading ipsw, it may take few minutes." +# aria2c -x16 -s16 -j16 "$ipswurl" +# mv *.ipsw ipsw +#fi ipsw=$(ls ipsw/*.ipsw) # put your ipsw @@ -660,7 +736,7 @@ if [ true ]; then HasBaseband='--no-baseband' fi - remote_cmd "/usr/bin/mount_filesystems" + remote_cmd "/usr/bin/mount_filesystems 2>/dev/null" has_active=$(remote_cmd "ls /mnt6/active" 2> /dev/null) if [ ! "$has_active" = "/mnt6/active" ]; then @@ -682,7 +758,7 @@ if [ true ]; then fi - "$dir"/img4tool -e -s blobs/"$deviceid"-"$version".shsh2 -m work/IM4M + "$dir"/img4tool -e -s blobs/"$deviceid"-"$version".shsh2 -m work/IM4M 2>/dev/null echo "Dumpped SHSH" if [ "$jailbreak" = "1" ]; then @@ -691,9 +767,9 @@ if [ true ]; then cp work/"$(awk "/""${model}""/{x=1}x&&/kernelcache.release/{print;exit}" work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1)" work/kernelcache if [[ "$deviceid" == "iPhone8"* ]] || [[ "$deviceid" == "iPad6"* ]] || [[ "$deviceid" == *'iPad5'* ]]; then - python3 -m pyimg4 im4p extract -i work/kernelcache -o work/kcache.raw --extra work/kpp.bin + python3 -m pyimg4 im4p extract -i work/kernelcache -o work/kcache.raw --extra work/kpp.bin 2>/dev/null else - python3 -m pyimg4 im4p extract -i work/kernelcache -o work/kcache.raw + python3 -m pyimg4 im4p extract -i work/kernelcache -o work/kcache.raw 2>/dev/null fi remote_cp work/kcache.raw root@localhost:/mnt6/$active/System/Library/Caches/com.apple.kernelcaches/kcache.raw @@ -702,18 +778,18 @@ if [ true ]; then remote_cmd "/usr/sbin/chown 0 /mnt1/private/var/root/Kernel15Patcher.ios" remote_cmd "/bin/chmod 755 /mnt1/private/var/root/Kernel15Patcher.ios" sleep 1 - if [ ! $(remote_cmd "/mnt1/private/var/root/Kernel15Patcher.ios /mnt6/$active/System/Library/Caches/com.apple.kernelcaches/kcache.raw /mnt6/$active/System/Library/Caches/com.apple.kernelcaches/kcache.patched") ]; then + if [ ! $(remote_cmd "/mnt1/private/var/root/Kernel15Patcher.ios /mnt6/$active/System/Library/Caches/com.apple.kernelcaches/kcache.raw /mnt6/$active/System/Library/Caches/com.apple.kernelcaches/kcache.patched 2>/dev/null") ]; then echo "you have the kernelpath already installed " fi sleep 2 remote_cp root@localhost:/mnt6/"$active"/System/Library/Caches/com.apple.kernelcaches/kcache.patched work/ # that will return the kernelpatcher in order to be patched again and boot with it - "$dir"/Kernel64Patcher work/kcache.patched work/kcache.patchedB -e $(if [[ ! "$version" = "15."* ]]; then echo "-b"; else echo "-f"; fi) $(if [ ! "$taurine" = "1" ]; then echo "-l"; fi) + "$dir"/Kernel64Patcher work/kcache.patched work/kcache.patchedB -e $(if [[ ! "$version" = "15."* ]]; then echo "-b"; else echo "-b15 -r"; fi) $(if [ ! "$taurine" = "1" ]; then echo "-l"; fi) 2>/dev/null if [[ "$deviceid" == *'iPhone8'* ]] || [[ "$deviceid" == *'iPad6'* ]] || [[ "$deviceid" == *'iPad5'* ]]; then - python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/kcache.im4p -f rknl --extra work/kpp.bin --lzss + python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/kcache.im4p -f rknl --extra work/kpp.bin --lzss 2>/dev/null else - python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/kcache.im4p -f rknl --lzss + python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/kcache.im4p -f rknl --lzss 2>/dev/null fi remote_cmd "rm -f /mnt6/$active/System/Library/Caches/com.apple.kernelcaches/kcache.raw /mnt6/$active/System/Library/Caches/com.apple.kernelcaches/kcache.patched /mnt6/$active/System/Library/Caches/com.apple.kernelcaches/kcache.im4p" @@ -733,7 +809,7 @@ if [ true ]; then echo "[*] Saving snapshot" if [ ! "$(remote_cmd "/usr/bin/snaputil -c orig-fs /mnt1")" ]; then - echo "the snapshot are already created, SKIPPING ..." + echo "[-] the snapshot are already created, SKIPPING ..." fi if [ ! $(remote_cmd "trollstoreinstaller TV") ]; then @@ -744,6 +820,7 @@ if [ true ]; then if [ ! $(remote_cmd "chmod +x /mnt1/Applications/dualra1n-loader.app/dualra1n* && /usr/sbin/chown 33 /mnt1/Applications/dualra1n-loader.app/dualra1n-loader && /bin/chmod 755 /mnt1/Applications/dualra1n-loader.app/dualra1n-helper && /usr/sbin/chown 0 /mnt1/Applications/dualra1n-loader.app/dualra1n-helper" ) ]; then echo "install dualra1n-loader using trollstore or another methods" fi + if [ "$taurine" = 1 ]; then echo "installing taurine" remote_cp other/taurine/* root@localhost:/mnt1/ @@ -778,14 +855,14 @@ if [ true ]; then echo "[*] You answered YES. so Activating the iBoot localboot path..." echo '[*] Patching the kernel to krnl' if [[ "$deviceid" == *'iPhone8'* ]] || [[ "$deviceid" == *'iPad6'* ]] || [[ "$deviceid" == *'iPad5'* ]]; then - python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/krnl.im4p -f krnl --extra work/kpp.bin --lzss + python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/krnl.im4p -f krnl --extra work/kpp.bin --lzss 2>/dev/null else - python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/krnl.im4p -f krnl --lzss + python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/krnl.im4p -f krnl --lzss 2>/dev/null fi - python3 -m pyimg4 img4 create -p work/krnl.im4p -o work/kernelcachd -m work/IM4M - remote_cp work/kernelcachd root@localhost:/mnt6/"$active"/System/Library/Caches/com.apple.kernelcaches/ + python3 -m pyimg4 img4 create -p work/krnl.im4p -o work/kernelcachd -m work/IM4M 2>/dev/null + remote_cp work/kernelcachd root@localhost:/mnt6/"$active"/System/Library/Caches/com.apple.kernelcaches/ 2>/dev/null if [ "$os" = 'Linux' ]; then sed -i 's/\/\kernelcache/\/\kernelcachd/g' work/iBEC.dec @@ -793,8 +870,8 @@ if [ true ]; then LC_ALL=C sed -i.bak -e 's/s\/\kernelcache/s\/\kernelcachd/g' work/iBEC.dec fi - "$dir"/iBoot64Patcher work/iBEC.dec work/iBEC.patched -b "-v wdt=-1 debug=0x2014e `if [ "$cpid" = '0x8960' ] || [ "$cpid" = '0x7000' ] || [ "$cpid" = '0x7001' ]; then echo "-restore"; fi`" -n -l - "$dir"/img4 -i work/iBEC.patched -o work/iBEC.img4 -M work/IM4M -A -T "$(if [[ "$cpid" == *"0x801"* ]]; then echo "ibss"; else echo "ibec"; fi)" + "$dir"/iBoot64Patcher work/iBEC.dec work/iBEC.patched -b "-v wdt=-1 debug=0x2014e `if [ "$cpid" = '0x8960' ] || [ "$cpid" = '0x7000' ] || [ "$cpid" = '0x7001' ]; then echo "-restore"; fi`" -n -l 2>/dev/null + "$dir"/img4 -i work/iBEC.patched -o work/iBEC.img4 -M work/IM4M -A -T "$(if [[ "$cpid" == *"0x801"* ]]; then echo "ibss"; else echo "ibec"; fi)" 2>/dev/null cp -v work/iBEC.img4 "boot/${deviceid}" break ;; @@ -820,25 +897,26 @@ if [ true ]; then cp "$extractedIpsw$(awk "/""${model}""/{x=1}x&&/kernelcache.release/{print;exit}" work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1)" "work/kernelcache" if [[ "$deviceid" == "iPhone8"* ]] || [[ "$deviceid" == "iPad6"* ]] || [[ "$deviceid" == *'iPad5'* ]]; then - python3 -m pyimg4 im4p extract -i work/kernelcache -o work/kcache.raw --extra work/kpp.bin + python3 -m pyimg4 im4p extract -i work/kernelcache -o work/kcache.raw --extra work/kpp.bin 2>/dev/null else - python3 -m pyimg4 im4p extract -i work/kernelcache -o work/kcache.raw + python3 -m pyimg4 im4p extract -i work/kernelcache -o work/kcache.raw 2>/dev/null fi - remote_cp work/kcache.raw root@localhost:/mnt1/System/Library/Caches/com.apple.kernelcaches/kcache.raw - remote_cp binaries/Kernel15Patcher.ios root@localhost:/mnt1/private/var/root/kpf15.ios + remote_cp work/kcache.raw root@localhost:/mnt1/System/Library/Caches/com.apple.kernelcaches/kcache.raw 2>/dev/null + remote_cp binaries/Kernel15Patcher.ios root@localhost:/mnt1/private/var/root/kpf15.ios 2>/dev/null remote_cmd "/usr/sbin/chown 0 /mnt1/private/var/root/kpf15.ios" remote_cmd "/bin/chmod 755 /mnt1/private/var/root/kpf15.ios" sleep 1 - if [ ! $(remote_cmd "/mnt1/private/var/root/kpf15.ios /mnt1/System/Library/Caches/com.apple.kernelcaches/kcache.raw /mnt1/System/Library/Caches/com.apple.kernelcaches/kcache.patched") ]; then + if [ ! $(remote_cmd "/mnt1/private/var/root/kpf15.ios /mnt1/System/Library/Caches/com.apple.kernelcaches/kcache.raw /mnt1/System/Library/Caches/com.apple.kernelcaches/kcache.patched 2>/dev/null") ]; then echo "you have the kernelpath already installed " fi - remote_cp root@localhost:/mnt1/System/Library/Caches/com.apple.kernelcaches/kcache.patched work/ + remote_cp root@localhost:/mnt1/System/Library/Caches/com.apple.kernelcaches/kcache.patched work/ 2>/dev/null remote_cmd "/usr/sbin/nvram auto-boot=false" remote_cmd "/sbin/reboot" - sleep 12 + sleep 10 + if [ "$(get_device_mode)" = "dfu" ]; then echo "device in false dfu mode. please force reboot and try to put it on dfu mode by precing the button." read -p "click enter if you got dfu mode on the iphone" @@ -852,16 +930,11 @@ if [ true ]; then - echo "[* ]Patchimg some boot files..." + echo "[* ]Patching some boot files..." if [ "$downgrade" = "1" ]; then sleep 1 - if [ -e boot/"$deviceid" ]; then - rm -rf boot/"$deviceid" - mkdir boot/"$deviceid" - else - mkdir boot/"$deviceid" - fi + mkdir -p boot/"$deviceid" if [ "$fixBoot" = "1" ]; then # i put it because my friend tested on his ipad and that does not boot so when we download all file from the internet so not extracting ipsw that boot fine idk why @@ -888,25 +961,21 @@ if [ true ]; then cp "$extractedIpsw$(awk "/""${model}""/{x=1}x&&/kernelcache.release/{print;exit}" work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1)" "work/" if [ "$os" = "Darwin" ]; then - "$dir"/img4 -i "$extractedIpsw"/Firmware/"$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."OS"."Info"."Path" xml1 -o - work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | head -1)".trustcache -o work/trustcache.img4 -M work/IM4M + "$dir"/img4 -i "$extractedIpsw"/Firmware/"$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."OS"."Info"."Path" xml1 -o - work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | head -1)".trustcache -o work/trustcache.img4 -M work/IM4M 2>/dev/null else - "$dir"/img4 -i "$extractedIpsw"/Firmware/"$(binaries/Linux/PlistBuddy work/BuildManifest.plist -c "Print BuildIdentities:0:Manifest:OS:Info:Path" | sed 's/"//g')".trustcache -o work/trustcache.img4 -M work/IM4M + "$dir"/img4 -i "$extractedIpsw"/Firmware/"$(binaries/Linux/PlistBuddy work/BuildManifest.plist -c "Print BuildIdentities:0:Manifest:OS:Info:Path" | sed 's/"//g')".trustcache -o work/trustcache.img4 -M work/IM4M 2>/dev/null fi fi echo "[*] Finished moving the boot files to work" sleep 2 - _pwn - sleep 2 - _reset - sleep 3 - "$dir"/gaster decrypt work/"$(awk "/""${model}""/{x=1}x&&/iBSS[.]/{print;exit}" work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | sed 's/Firmware[/]dfu[/]//')" work/iBSS.dec + "$dir"/gaster decrypt work/"$(awk "/""${model}""/{x=1}x&&/iBSS[.]/{print;exit}" work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | sed 's/Firmware[/]dfu[/]//')" work/iBSS.dec 2>/dev/null "$dir"/iBoot64Patcher work/iBSS.dec work/iBSS.patched "$dir"/img4 -i work/iBSS.patched -o work/iBSS.img4 -M work/IM4M -A -T ibss - "$dir"/gaster decrypt work/"$(awk "/""${model}""/{x=1}x&&/iBoot[.]/{print;exit}" work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | sed 's/Firmware[/]all_flash[/]//')" work/iBEC.dec + "$dir"/gaster decrypt work/"$(awk "/""${model}""/{x=1}x&&/iBoot[.]/{print;exit}" work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | sed 's/Firmware[/]all_flash[/]//')" work/iBEC.dec 2>/dev/null if [ "$os" = 'Linux' ]; then sed -i 's/\/\kernelcache/\/\kernelcachd/g' work/iBEC.dec @@ -914,53 +983,54 @@ if [ true ]; then LC_ALL=C sed -i.bak -e 's/s\/\kernelcache/s\/\kernelcachd/g' work/iBEC.dec fi - "$dir"/iBoot64Patcher work/iBEC.dec work/iBEC.patched -b "-v wdt=-1 `if [ "$cpid" = '0x8960' ] || [ "$cpid" = '0x7000' ] || [ "$cpid" = '0x7001' ]; then echo "-restore"; fi`" -n "$(if [ "$local" = "1" ]; then echo "-l"; elif [ "$fsboot" = "1" ]; then echo "-f"; fi)" - "$dir"/img4 -i work/iBEC.patched -o work/iBEC.img4 -M work/IM4M -A -T "$(if [[ "$cpid" == *"0x801"* ]]; then echo "ibss"; else echo "ibec"; fi)" + "$dir"/iBoot64Patcher work/iBEC.dec work/iBEC.patched -b "-v wdt=-1 `if [ "$cpid" = '0x8960' ] || [ "$cpid" = '0x7000' ] || [ "$cpid" = '0x7001' ]; then echo "-restore"; fi`" -n "$(if [ "$local" = "1" ]; then echo "-l"; fi)" 2>/dev/null + "$dir"/img4 -i work/iBEC.patched -o work/iBEC.img4 -M work/IM4M -A -T "$(if [[ "$cpid" == *"0x801"* ]]; then echo "ibss"; else echo "ibec"; fi)" 2>/dev/null - "$dir"/Kernel64Patcher work/kcache.patched work/kcache.patchedB -a -e $(if [[ "$version" = "14."* ]]; then echo "-b"; else echo "-f"; fi) `if [ "$fixBoot" = "1" ]; then echo "-s"; fi` + "$dir"/Kernel64Patcher work/kcache.patched work/kcache.patchedB -e $(if [[ "$version" = "14."* ]]; then echo "-b"; else echo "-b15 -r"; fi) 2>/dev/null if [[ "$deviceid" == *'iPhone8'* ]] || [[ "$deviceid" == *'iPad6'* ]] || [[ "$deviceid" == *'iPad5'* ]]; then - python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/kcache.im4p -f rkrn --extra work/kpp.bin --lzss + python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/kcache.im4p -f rkrn --extra work/kpp.bin --lzss 2>/dev/null else - python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/kcache.im4p -f rkrn --lzss + python3 -m pyimg4 im4p create -i work/kcache.patchedB -o work/kcache.im4p -f rkrn --lzss 2>/dev/null fi + python3 -m pyimg4 img4 create -p work/kcache.im4p -o work/kernelcache.img4 -m work/IM4M if [[ "$deviceid" == "iPhone8"* ]] || [[ "$deviceid" == "iPad6"* ]] || [[ "$deviceid" == *'iPad5'* ]]; then if [ "$os" = "Darwin" ]; then - python3 -m pyimg4 im4p extract -i "$extractedIpsw$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."RestoreKernelCache"."Info"."Path" xml1 -o - work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | head -1)" -o work/kcache.dec --extra work/kpp.bin + python3 -m pyimg4 im4p extract -i "$extractedIpsw$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."RestoreKernelCache"."Info"."Path" xml1 -o - work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | head -1)" -o work/kcache.dec --extra work/kpp.bin 2>/dev/null else - python3 -m pyimg4 im4p extract -i "$extractedIpsw$(binaries/Linux/PlistBuddy work/BuildManifest.plist -c "Print BuildIdentities:0:Manifest:RestoreKernelCache:Info:Path" | sed 's/"//g')" -o work/kcache.dec --extra work/kpp.bin + python3 -m pyimg4 im4p extract -i "$extractedIpsw$(binaries/Linux/PlistBuddy work/BuildManifest.plist -c "Print BuildIdentities:0:Manifest:RestoreKernelCache:Info:Path" | sed 's/"//g')" -o work/kcache.dec --extra work/kpp.bin 2>/dev/null fi else if [ "$os" = "Darwin" ]; then - python3 -m pyimg4 im4p extract -i "$extractedIpsw$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."RestoreKernelCache"."Info"."Path" xml1 -o - work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | head -1)" -o work/kcache.dec + python3 -m pyimg4 im4p extract -i "$extractedIpsw$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."RestoreKernelCache"."Info"."Path" xml1 -o - work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | head -1)" -o work/kcache.dec 2>/dev/null else - python3 -m pyimg4 im4p extract -i "$extractedIpsw$(binaries/Linux/PlistBuddy work/BuildManifest.plist -c "Print BuildIdentities:0:Manifest:RestoreKernelCache:Info:Path" | sed 's/"//g')" -o work/kcache.dec + python3 -m pyimg4 im4p extract -i "$extractedIpsw$(binaries/Linux/PlistBuddy work/BuildManifest.plist -c "Print BuildIdentities:0:Manifest:RestoreKernelCache:Info:Path" | sed 's/"//g')" -o work/kcache.dec 2>/dev/null fi fi "$dir"/Kernel64Patcher work/kcache.dec work/krnl.patched -a -b if [[ "$deviceid" == "iPhone8"* ]] || [[ "$deviceid" == "iPad6"* ]] || [[ "$deviceid" == *'iPad5'* ]]; then - python3 -m pyimg4 im4p create -i work/krnl.patched -o work/krnl.im4p --extra work/kpp.bin -f rkrn --lzss + python3 -m pyimg4 im4p create -i work/krnl.patched -o work/krnl.im4p --extra work/kpp.bin -f rkrn --lzss 2>/dev/null else - python3 -m pyimg4 im4p create -i work/krnl.patched -o work/krnl.im4p -f rkrn --lzss + python3 -m pyimg4 im4p create -i work/krnl.patched -o work/krnl.im4p -f rkrn --lzss 2>/dev/null fi - "$dir"/img4 -i work/"$(awk "/""${model}""/{x=1}x&&/DeviceTree[.]/{print;exit}" work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | sed 's/Firmware[/]all_flash[/]//')" work/devicetree.img4 -M work/IM4M -T rdtr + "$dir"/img4 -i work/"$(awk "/""${model}""/{x=1}x&&/DeviceTree[.]/{print;exit}" work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | sed 's/Firmware[/]all_flash[/]//')" work/devicetree.img4 -M work/IM4M -T rdtr 2>/dev/null if [ "$os" = "Darwin" ]; then - cp "$extractedIpsw$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."RestoreRamDisk"."Info"."Path" xml1 -o - work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | head -1)" "work/" + cp "$extractedIpsw$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."RestoreRamDisk"."Info"."Path" xml1 -o - work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | head -1)" "work/" 2>/dev/null else - cp "$extractedIpsw$(binaries/Linux/PlistBuddy work/BuildManifest.plist -c "Print BuildIdentities:0:Manifest:RestoreRamDisk:Info:Path" | sed 's/"//g')" "work/" + cp "$extractedIpsw$(binaries/Linux/PlistBuddy work/BuildManifest.plist -c "Print BuildIdentities:0:Manifest:RestoreRamDisk:Info:Path" | sed 's/"//g')" "work/" 2>/dev/null fi if [ "$os" = "Darwin" ]; then - "$dir"/img4 -i work/"$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."RestoreRamDisk"."Info"."Path" xml1 -o - work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | head -1)" -o work/ramdisk.dmg + "$dir"/img4 -i work/"$(/usr/bin/plutil -extract "BuildIdentities".0."Manifest"."RestoreRamDisk"."Info"."Path" xml1 -o - work/BuildManifest.plist | grep '' |cut -d\> -f2 |cut -d\< -f1 | head -1)" -o work/ramdisk.dmg 2>/dev/null else - "$dir"/img4 -i work/"$(binaries/Linux/PlistBuddy work/BuildManifest.plist -c "Print BuildIdentities:0:Manifest:RestoreRamDisk:Info:Path" | sed 's/"//g')" -o work/ramdisk.dmg + "$dir"/img4 -i work/"$(binaries/Linux/PlistBuddy work/BuildManifest.plist -c "Print BuildIdentities:0:Manifest:RestoreRamDisk:Info:Path" | sed 's/"//g')" -o work/ramdisk.dmg 2>/dev/null fi echo "[*] Patching the restored_external and asr, and saving them into the ramdisk ..." @@ -1017,7 +1087,7 @@ if [ true ]; then echo "[*] Sucess Patching the boot files" sleep 1 - echo "[*] please execute wikiproxy.py in order to fix key issue" + echo "[*] please execute wikiproxy.py in order to fix key issue if you have it" echo "Please open another terminal and execute: python3 wikiproxy.py, [CLICK ENTER WHEN YOU SUCCESS]" read -n 1 -s @@ -1037,8 +1107,6 @@ if [ true ]; then _runFuturerestore sleep 2 echo -e "\033[1;33mif nothing works just try to run (with sudo or without) this command:\033[0m \033[1m$dir/futurerestore -t blobs/$deviceid-$version.shsh2 --use-pwndfu --skip-blob --rdsk work/rdsk.im4p --rkrn work/krnl.im4p --latest-sep $HasBaseband $ipsw\033[0m" - touch .downgraded - echo "if futurerestore restore sucess, you can boot using --boot" fi