mirror of
https://github.com/LukeZGD/Legacy-iOS-Kit.git
synced 2024-11-27 10:24:16 +01:00
Some more updates
This commit is contained in:
parent
d45b8d7cfd
commit
efcdfb23d2
109
restore.sh
109
restore.sh
@ -37,7 +37,7 @@ pause() {
|
|||||||
|
|
||||||
clean() {
|
clean() {
|
||||||
kill $httpserver_pid $iproxy_pid $anisette_pid 2>/dev/null
|
kill $httpserver_pid $iproxy_pid $anisette_pid 2>/dev/null
|
||||||
popd &>/dev/null
|
popd >/dev/null
|
||||||
rm -rf "$(dirname "$0")/tmp$$/"* "$(dirname "$0")/iP"*/ "$(dirname "$0")/tmp$$/" 2>/dev/null
|
rm -rf "$(dirname "$0")/tmp$$/"* "$(dirname "$0")/iP"*/ "$(dirname "$0")/tmp$$/" 2>/dev/null
|
||||||
if [[ $platform == "macos" && $(ls "$(dirname "$0")" | grep -v tmp$$ | grep -c tmp) == 0 ]]; then
|
if [[ $platform == "macos" && $(ls "$(dirname "$0")" | grep -v tmp$$ | grep -c tmp) == 0 ]]; then
|
||||||
killall -CONT AMPDevicesAgent AMPDeviceDiscoveryAgent MobileDeviceUpdater
|
killall -CONT AMPDevicesAgent AMPDeviceDiscoveryAgent MobileDeviceUpdater
|
||||||
@ -1200,11 +1200,17 @@ device_sshpass() {
|
|||||||
device_iproxy() {
|
device_iproxy() {
|
||||||
local port=22
|
local port=22
|
||||||
log "Running iproxy for SSH..."
|
log "Running iproxy for SSH..."
|
||||||
if [[ -n $1 ]]; then
|
if [[ -n $2 ]]; then
|
||||||
port=$1
|
port=$2
|
||||||
fi
|
fi
|
||||||
"$dir/iproxy" $ssh_port $port >/dev/null &
|
if [[ $1 == "no-logging" ]]; then
|
||||||
iproxy_pid=$!
|
"$dir/iproxy" $ssh_port $port >/dev/null &
|
||||||
|
iproxy_pid=$!
|
||||||
|
else
|
||||||
|
"$dir/iproxy" $ssh_port $port &
|
||||||
|
iproxy_pid=$!
|
||||||
|
fi
|
||||||
|
log "iproxy PID: $iproxy_pid"
|
||||||
sleep 1
|
sleep 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4599,6 +4605,7 @@ restore_futurerestore() {
|
|||||||
log "Starting local server for firmware keys: $opt"
|
log "Starting local server for firmware keys: $opt"
|
||||||
$opt &
|
$opt &
|
||||||
httpserver_pid=$!
|
httpserver_pid=$!
|
||||||
|
log "httpserver PID: $httpserver_pid"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
log "Waiting for local server"
|
log "Waiting for local server"
|
||||||
until [[ $(curl http://127.0.0.1:$port 2>/dev/null) ]]; do
|
until [[ $(curl http://127.0.0.1:$port 2>/dev/null) ]]; do
|
||||||
@ -4629,7 +4636,7 @@ restore_futurerestore() {
|
|||||||
else
|
else
|
||||||
ExtraArr=("--latest-sep")
|
ExtraArr=("--latest-sep")
|
||||||
case $device_type in
|
case $device_type in
|
||||||
iPhone* | iPad5,[24] | iPad6,[48] | iPad6,12 ) ExtraArr+=("--latest-baseband");;
|
iPhone* | iPad5,[24] | iPad6,[48] | iPad6,12 | iPad7,[46] | iPad7,12 ) ExtraArr+=("--latest-baseband");;
|
||||||
* ) ExtraArr+=("--no-baseband");;
|
* ) ExtraArr+=("--no-baseband");;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
@ -5322,21 +5329,21 @@ device_ramdisk64() {
|
|||||||
device_find_mode Restore 20
|
device_find_mode Restore 20
|
||||||
|
|
||||||
if [[ $ios8 == 1 ]]; then
|
if [[ $ios8 == 1 ]]; then
|
||||||
device_iproxy 44
|
device_iproxy no-logging 44
|
||||||
print "* Booted SSH ramdisk is based on: https://ios7.iarchive.app/downgrade/making-ramdisk.html"
|
print "* Booted SSH ramdisk is based on: https://ios7.iarchive.app/downgrade/making-ramdisk.html"
|
||||||
else
|
else
|
||||||
device_iproxy
|
device_iproxy no-logging
|
||||||
print "* Booted SSH ramdisk is based on: https://github.com/verygenericname/SSHRD_Script"
|
print "* Booted SSH ramdisk is based on: https://github.com/verygenericname/SSHRD_Script"
|
||||||
fi
|
fi
|
||||||
device_sshpass alpine
|
device_sshpass alpine
|
||||||
|
|
||||||
print "* Mount filesystems with this command (for iOS 11 and newer):"
|
print "* Mount filesystems with this command (for iOS 11.3 and newer):"
|
||||||
print " /usr/bin/mount_filesystems"
|
print " /usr/bin/mount_filesystems"
|
||||||
print "* Mount filesystems with this command (for iOS 10.3.x):"
|
print "* Mount filesystems with this command (for iOS 10.3.x):"
|
||||||
print " /sbin/mount_apfs /dev/disk0s1s1 /mnt1; /sbin/mount_apfs /dev/disk0s1s2 /mnt2"
|
print " /sbin/mount_apfs /dev/disk0s1s1 /mnt1; /sbin/mount_apfs /dev/disk0s1s2 /mnt2"
|
||||||
print "* Mount filesystems with this command (for iOS 10.2.1 and older):"
|
print "* Mount filesystems with this command (for iOS 10.2.1 and older):"
|
||||||
print " /sbin/mount_hfs /dev/disk0s1s1 /mnt1; /sbin/mount_hfs /dev/disk0s1s2 /mnt2"
|
print " /sbin/mount_hfs /dev/disk0s1s1 /mnt1; /sbin/mount_hfs /dev/disk0s1s2 /mnt2"
|
||||||
print "* Mounting and/or modifying data (/mnt2) might not work depending on iOS"
|
warn "Mounting and/or modifying data (/mnt2) might not work for 64-bit iOS"
|
||||||
|
|
||||||
menu_ramdisk $build_id
|
menu_ramdisk $build_id
|
||||||
}
|
}
|
||||||
@ -5560,9 +5567,12 @@ device_ramdisk() {
|
|||||||
elif [[ -n $1 ]]; then
|
elif [[ -n $1 ]]; then
|
||||||
log "Booting, please wait..."
|
log "Booting, please wait..."
|
||||||
device_find_mode Restore 20
|
device_find_mode Restore 20
|
||||||
|
device_iproxy
|
||||||
|
else
|
||||||
|
log "Booting, please wait..."
|
||||||
|
device_find_mode Restore 20
|
||||||
|
device_iproxy no-logging
|
||||||
fi
|
fi
|
||||||
|
|
||||||
device_iproxy
|
|
||||||
device_sshpass alpine
|
device_sshpass alpine
|
||||||
|
|
||||||
case $mode in
|
case $mode in
|
||||||
@ -5695,14 +5705,14 @@ device_ramdisk() {
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
"clearnvram" )
|
"clearnvram" )
|
||||||
log "Sending commands for clearing NVRAM..."
|
log "Sending command for clearing NVRAM..."
|
||||||
$ssh -p $ssh_port root@127.0.0.1 "nvram -c; reboot_bak"
|
$ssh -p $ssh_port root@127.0.0.1 "nvram -c; reboot_bak"
|
||||||
log "Done, your device should reboot now"
|
log "Done, your device should reboot now"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
|
|
||||||
"setnvram" )
|
"setnvram" )
|
||||||
log "Sending commands for NVRAM..."
|
log "Sending commands for setting NVRAM variables..."
|
||||||
$ssh -p $ssh_port root@127.0.0.1 "nvram -c; nvram boot-partition=$rec"
|
$ssh -p $ssh_port root@127.0.0.1 "nvram -c; nvram boot-partition=$rec"
|
||||||
if [[ $rec == 2 ]]; then
|
if [[ $rec == 2 ]]; then
|
||||||
case $device_type in
|
case $device_type in
|
||||||
@ -5781,9 +5791,11 @@ device_ramdisk_ios3exploit() {
|
|||||||
device_ramdisk_iosvers() {
|
device_ramdisk_iosvers() {
|
||||||
device_vers=
|
device_vers=
|
||||||
device_build=
|
device_build=
|
||||||
log "Mounting root filesystem"
|
if (( device_proc < 7 )); then
|
||||||
$ssh -p $ssh_port root@127.0.0.1 "mount.sh root"
|
log "Mounting root filesystem"
|
||||||
sleep 1
|
$ssh -p $ssh_port root@127.0.0.1 "mount.sh root"
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
log "Getting iOS version"
|
log "Getting iOS version"
|
||||||
$scp -P $ssh_port root@127.0.0.1:/mnt1/System/Library/CoreServices/SystemVersion.plist .
|
$scp -P $ssh_port root@127.0.0.1:/mnt1/System/Library/CoreServices/SystemVersion.plist .
|
||||||
if [[ $platform == "macos" ]]; then
|
if [[ $platform == "macos" ]]; then
|
||||||
@ -5801,13 +5813,13 @@ device_ramdisk_iosvers() {
|
|||||||
menu_ramdisk() {
|
menu_ramdisk() {
|
||||||
local loop
|
local loop
|
||||||
local mode
|
local mode
|
||||||
local menu_items=("Connect to SSH")
|
local menu_items=("Connect to SSH" "Dump Blobs")
|
||||||
local reboot="reboot_bak"
|
local reboot="reboot_bak"
|
||||||
if (( device_proc >= 7 )); then
|
if (( device_proc >= 7 )); then
|
||||||
menu_items+=("Dump Blobs")
|
menu_items+=("Dump SEP Firmware")
|
||||||
reboot="/sbin/reboot"
|
reboot="/sbin/reboot"
|
||||||
else
|
else
|
||||||
menu_items+=("Get iOS Version" "Dump Baseband/Activation")
|
menu_items+=("Dump Baseband/Activation")
|
||||||
fi
|
fi
|
||||||
if [[ $1 == "18C66" ]]; then
|
if [[ $1 == "18C66" ]]; then
|
||||||
menu_items+=("Install TrollStore")
|
menu_items+=("Install TrollStore")
|
||||||
@ -5816,7 +5828,10 @@ menu_ramdisk() {
|
|||||||
elif (( device_proc <= 8 )); then
|
elif (( device_proc <= 8 )); then
|
||||||
menu_items+=("Erase All (iOS 7 and 8)")
|
menu_items+=("Erase All (iOS 7 and 8)")
|
||||||
fi
|
fi
|
||||||
menu_items+=("Reboot Device" "Exit")
|
if (( device_proc >= 5 )); then
|
||||||
|
menu_items+=("Erase All (iOS 9+)")
|
||||||
|
fi
|
||||||
|
menu_items+=("Clear NVRAM" "Get iOS Version" "Reboot Device" "Exit")
|
||||||
|
|
||||||
print "* For accessing data, note the following:"
|
print "* For accessing data, note the following:"
|
||||||
print "* Host: sftp://127.0.0.1 | User: root | Password: alpine | Port: $ssh_port"
|
print "* Host: sftp://127.0.0.1 | User: root | Password: alpine | Port: $ssh_port"
|
||||||
@ -5847,6 +5862,9 @@ menu_ramdisk() {
|
|||||||
"Dump Baseband/Activation" ) mode="dump-bbactrec";;
|
"Dump Baseband/Activation" ) mode="dump-bbactrec";;
|
||||||
"Install TrollStore" ) mode="trollstore";;
|
"Install TrollStore" ) mode="trollstore";;
|
||||||
"Erase All (iOS 7 and 8)" ) mode="erase78";;
|
"Erase All (iOS 7 and 8)" ) mode="erase78";;
|
||||||
|
"Erase All (iOS 9+)" ) mode="erase9";;
|
||||||
|
"Clear NVRAM" ) mode="clearnvram";;
|
||||||
|
"Dump SEP Firmware" ) mode="dump-sep";;
|
||||||
"Exit" ) mode="exit";;
|
"Exit" ) mode="exit";;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@ -5858,7 +5876,6 @@ menu_ramdisk() {
|
|||||||
ssh_pid=$!
|
ssh_pid=$!
|
||||||
sleep 1
|
sleep 1
|
||||||
kill $ssh_pid
|
kill $ssh_pid
|
||||||
killall ssh
|
|
||||||
fi
|
fi
|
||||||
$ssh -p $ssh_port root@127.0.0.1
|
$ssh -p $ssh_port root@127.0.0.1
|
||||||
;;
|
;;
|
||||||
@ -5873,6 +5890,12 @@ menu_ramdisk() {
|
|||||||
if [[ $opt != 'Y' && $opt != 'y' ]]; then
|
if [[ $opt != 'Y' && $opt != 'y' ]]; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
elif (( device_proc < 7 )); then
|
||||||
|
warn "This is the wrong place to dump onboard blobs for 32-bit devices."
|
||||||
|
print "* Reboot your device, run the script again and go to Save SHSH Blobs -> Onboard Blobs"
|
||||||
|
print "* For more details, go to: https://github.com/LukeZGD/Legacy-iOS-Kit/wiki/Saving-onboard-SHSH-blobs-of-current-iOS-version"
|
||||||
|
pause
|
||||||
|
continue
|
||||||
fi
|
fi
|
||||||
log "Attempting to dump blobs"
|
log "Attempting to dump blobs"
|
||||||
$ssh -p $ssh_port root@127.0.0.1 "cat /dev/rdisk1" | dd of=dump.raw bs=256 count=$((0x4000))
|
$ssh -p $ssh_port root@127.0.0.1 "cat /dev/rdisk1" | dd of=dump.raw bs=256 count=$((0x4000))
|
||||||
@ -5897,6 +5920,16 @@ menu_ramdisk() {
|
|||||||
print "* If unable to be converted, this dump is likely not usable for restoring."
|
print "* If unable to be converted, this dump is likely not usable for restoring."
|
||||||
;;
|
;;
|
||||||
"iosvers" )
|
"iosvers" )
|
||||||
|
if (( device_proc >= 7 )); then
|
||||||
|
print "* Unfortunately the mount command needs to be done manually for 64-bit devices."
|
||||||
|
print "* The mount command also changes depending on the iOS version (which is what we're trying to get here in the first place)"
|
||||||
|
print "* You need to mount filesystems using the appropriate command before continuing (scroll up to see the commands)"
|
||||||
|
warn "Make sure that you know what you are doing when using this option on 64-bit devices."
|
||||||
|
read -p "$(input "Select Y to continue, N to go back (y/N) ")" opt
|
||||||
|
if [[ $opt != 'Y' && $opt != 'y' ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
device_ramdisk_iosvers
|
device_ramdisk_iosvers
|
||||||
if [[ -n $device_vers ]]; then
|
if [[ -n $device_vers ]]; then
|
||||||
log "Retrieved the current iOS version"
|
log "Retrieved the current iOS version"
|
||||||
@ -5940,9 +5973,11 @@ menu_ramdisk() {
|
|||||||
log "Done!"
|
log "Done!"
|
||||||
;;
|
;;
|
||||||
"erase78" )
|
"erase78" )
|
||||||
|
log "Please read the message below:"
|
||||||
warn "This will do a \"Erase All Content and Settings\" procedure for iOS 7 and 8 devices."
|
warn "This will do a \"Erase All Content and Settings\" procedure for iOS 7 and 8 devices."
|
||||||
|
warn "Do NOT do this if your device is jailbroken untethered!!!"
|
||||||
print "* This procedure will do step 6 of this tutorial: https://reddit.com/r/LegacyJailbreak/comments/13of20g/tutorial_new_restoringerasingwipingrescuing_a/"
|
print "* This procedure will do step 6 of this tutorial: https://reddit.com/r/LegacyJailbreak/comments/13of20g/tutorial_new_restoringerasingwipingrescuing_a/"
|
||||||
print "* If you want to, you may also do this process manually by running the commands in the tutorial."
|
print "* Note that it may also be better to do this process manually instead by following the commands in the tutorial."
|
||||||
print "* For iOS 8 devices, also remove this file if you will be doing it manually: /mnt2/mobile/Library/SpringBoard/LockoutStateJournal.plist"
|
print "* For iOS 8 devices, also remove this file if you will be doing it manually: /mnt2/mobile/Library/SpringBoard/LockoutStateJournal.plist"
|
||||||
if (( device_proc >= 7 )); then
|
if (( device_proc >= 7 )); then
|
||||||
print "* If your device is on iOS 7, make sure to boot an iOS 8 ramdisk afterwards to fix booting."
|
print "* If your device is on iOS 7, make sure to boot an iOS 8 ramdisk afterwards to fix booting."
|
||||||
@ -5960,6 +5995,30 @@ menu_ramdisk() {
|
|||||||
print "* Proceed to trigger a restore by entering wrong passwords 10 times."
|
print "* Proceed to trigger a restore by entering wrong passwords 10 times."
|
||||||
loop=1
|
loop=1
|
||||||
;;
|
;;
|
||||||
|
"dump-sep" )
|
||||||
|
log "Please read the message below:"
|
||||||
|
print "* To dump SEP Firmware, do the following:"
|
||||||
|
print " - Mount filesystems using the appropriate command for your iOS version (scroll up to see the commands)"
|
||||||
|
print " - Grab the file sep-firmware.img4 from /mnt1/usr/standalone or /mnt1/usr/standalone/firmware"
|
||||||
|
print "* Better do this process manually since Legacy iOS Kit does not know your iOS version"
|
||||||
|
pause
|
||||||
|
;;
|
||||||
|
"clearnvram" )
|
||||||
|
log "Sending command for clearing NVRAM..."
|
||||||
|
$ssh -p $ssh_port root@127.0.0.1 "nvram -c"
|
||||||
|
log "Done"
|
||||||
|
;;
|
||||||
|
"erase9" )
|
||||||
|
warn "This will do a \"Erase All Content and Settings\" procedure for iOS 9+ devices."
|
||||||
|
warn "Do NOT do this if your device is jailbroken untethered!!! (mostly iOS 9.3.4/9.1 and lower)"
|
||||||
|
read -p "$(input "Select Y to continue, N to go back (y/N) ")" opt
|
||||||
|
if [[ $opt != 'Y' && $opt != 'y' ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
log "Sending command for erasing all content and settings..."
|
||||||
|
$ssh -p $ssh_port root@127.0.0.1 "nvram oblit-inprogress=5"
|
||||||
|
log "Done. Reboot to apply changes, or clear NVRAM now to cancel erase"
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@ -7875,7 +7934,7 @@ device_ssh() {
|
|||||||
print "* If this is not what you want, you might be looking for the \"SSH Ramdisk\" option instead."
|
print "* If this is not what you want, you might be looking for the \"SSH Ramdisk\" option instead."
|
||||||
echo
|
echo
|
||||||
device_ssh_message
|
device_ssh_message
|
||||||
device_iproxy
|
device_iproxy no-logging
|
||||||
device_sshpass
|
device_sshpass
|
||||||
log "Connecting to device SSH..."
|
log "Connecting to device SSH..."
|
||||||
print "* For accessing data, note the following:"
|
print "* For accessing data, note the following:"
|
||||||
@ -8470,6 +8529,7 @@ device_altserver() {
|
|||||||
log "Running Anisette"
|
log "Running Anisette"
|
||||||
$anisette &
|
$anisette &
|
||||||
anisette_pid=$!
|
anisette_pid=$!
|
||||||
|
log "Anisette PID: $anisette_pid"
|
||||||
local ready=0
|
local ready=0
|
||||||
log "Waiting for Anisette"
|
log "Waiting for Anisette"
|
||||||
while [[ $ready != 1 ]]; do
|
while [[ $ready != 1 ]]; do
|
||||||
@ -8505,6 +8565,7 @@ restore_latest64() {
|
|||||||
input "Restore/Update Select Option"
|
input "Restore/Update Select Option"
|
||||||
print "* Restore will do factory reset and update the device, all data will be cleared"
|
print "* Restore will do factory reset and update the device, all data will be cleared"
|
||||||
print "* Update will only update the device to the latest version"
|
print "* Update will only update the device to the latest version"
|
||||||
|
print "* Or press Ctrl+C to cancel"
|
||||||
read -p "$(input "Select Y to Restore, select N to Update (Y/n) ")" opt2
|
read -p "$(input "Select Y to Restore, select N to Update (Y/n) ")" opt2
|
||||||
if [[ $opt2 != 'n' && $opt2 != 'N' ]]; then
|
if [[ $opt2 != 'n' && $opt2 != 'N' ]]; then
|
||||||
opt+="e"
|
opt+="e"
|
||||||
|
Loading…
Reference in New Issue
Block a user