An update

This commit is contained in:
LukeZGD 2023-09-04 23:06:58 +08:00
parent feb987d33c
commit 04ff046a9f
2 changed files with 35 additions and 35 deletions

View File

@ -7,6 +7,7 @@
- **Read the ["Troubleshooting" wiki page](https://github.com/LukeZGD/Legacy-iOS-Kit/wiki/Troubleshooting) for tips, frequent questions, and troubleshooting** - **Read the ["Troubleshooting" wiki page](https://github.com/LukeZGD/Legacy-iOS-Kit/wiki/Troubleshooting) for tips, frequent questions, and troubleshooting**
## Features ## Features
- Legacy iOS Kit supports all 32-bit iOS devices, and some A7/A8 64-bit devices
- Restore to iOS 8.4.1 or 6.1.3 on supported 32-bit devices **(OTA signed)** - Restore to iOS 8.4.1 or 6.1.3 on supported 32-bit devices **(OTA signed)**
- Restore iPhone 4 GSM and CDMA (iPhone3,1 and 3,3) to lower iOS versions **(powdersn0w)** - Restore iPhone 4 GSM and CDMA (iPhone3,1 and 3,3) to lower iOS versions **(powdersn0w)**
- Restore iPhone 3GS and iPod touch 2 to lower iOS versions **(24Kpwn/alloc8)** - Restore iPhone 3GS and iPod touch 2 to lower iOS versions **(24Kpwn/alloc8)**
@ -14,22 +15,22 @@
- Restore 32-bit devices to lower iOS versions **with iOS 7.1.x blobs (powdersn0w)** - Restore 32-bit devices to lower iOS versions **with iOS 7.1.x blobs (powdersn0w)**
- For iPhone 5 (not 5C), 7.0.x blobs can also be used - For iPhone 5 (not 5C), 7.0.x blobs can also be used
- Device support is limited, see below - Device support is limited, see below
- Option to **jailbreak** all supported 32-bit devices - Hacktivation for iPhone 2G, 3G, 3GS (activate without valid SIM card)
- Option to **jailbreak** all 32-bit iOS devices
- Available on iOS versions 3.1.3, 3.2.2, 4.x, 5.x, 6.x, 7.x, 8.x - Available on iOS versions 3.1.3, 3.2.2, 4.x, 5.x, 6.x, 7.x, 8.x
- Only unsupported version is jailbreaking iPad 2 on 4.3.x - Only unsupported version is jailbreaking iPad 2 on 4.3.x
- There are two methods of jailbreaking: Custom IPSW and SSH Ramdisk - There are two methods of jailbreaking: Custom IPSW and SSH Ramdisk
- Restore to iOS 10.3.3 on supported A7 devices **(OTA signed)** - Restore to iOS 10.3.3 on supported A7 devices **(OTA signed)**
- Restore A7/A8 devices to lower iOS versions **with SHSH blobs** - Restore A7/A8 devices to lower iOS versions **with SHSH blobs**
- Limited compatibility due to SEP/BB, see below - Limited compatibility due to SEP/BB, see below
- The latest baseband will be flashed for 32-bit devices if applicable
- Save onboard and Cydia SHSH blobs for 32-bit devices - Save onboard and Cydia SHSH blobs for 32-bit devices
- Place device to pwned iBSS/kDFU mode for supported devices - Place device to pwned iBSS/kDFU mode for supported devices
- Boot SSH Ramdisk on supported 32-bit devices - Boot SSH Ramdisk on supported 32-bit devices
- Clear NVRAM for devices that support powdersn0w - Clear NVRAM for devices that support powdersn0w
- Device activation using ideviceactivation - Device activation using ideviceactivation (useful for iOS 4 and lower)
- The latest baseband will be flashed for A5(X)/A6(X) devices if applicable
- Dumping and stitching baseband to IPSW (requires `--disable-bbupdate`) - Dumping and stitching baseband to IPSW (requires `--disable-bbupdate`)
- Dumping and stitching activation records to IPSW (requires `--activation-records`) - Dumping and stitching activation records to IPSW (requires `--activation-records`)
- Hacktivation for iPhone 2G, 3G, 3GS (activate without valid SIM card)
## Supported devices ## Supported devices
- [Identify your device here](https://ipsw.me/device-finder) - [Identify your device here](https://ipsw.me/device-finder)
@ -70,7 +71,7 @@
</table> </table>
- Restoring with SHSH blobs and using SSH Ramdisks are supported on the following devices: - Restoring with SHSH blobs and using SSH Ramdisks are supported on the following devices:
- Supports most 32-bit devices (iOS 3 to 10, version range depends on device) - Supports all 32-bit iOS devices (iOS 3 to 10)
- iPhone 2G, 3G, 3GS, 4, 4S, 5, 5C - iPhone 2G, 3G, 3GS, 4, 4S, 5, 5C
- iPad 1, 2, 3, 4, mini 1 - iPad 1, 2, 3, 4, mini 1
- iPod touch 1, 2, 3, 4, 5 - iPod touch 1, 2, 3, 4, 5

View File

@ -63,19 +63,19 @@ display_help() {
Usage: ./restore.sh [Options] Usage: ./restore.sh [Options]
List of options: List of options:
--activation-records Enable dumping/stitching activation records
--debug For script debugging (set -x and debug mode) --debug For script debugging (set -x and debug mode)
--disable-bbupdate Disable bbupdate and enable dumping/stitching baseband
--disable-sudoloop Disable running tools as root for Linux --disable-sudoloop Disable running tools as root for Linux
--disable-usbmuxd Disable running usbmuxd as root for Linux --disable-usbmuxd Disable running usbmuxd as root for Linux
--entry-device Enable manual device and ECID entry --entry-device Enable manual device and ECID entry
--help Display this help message --help Display this help message
--ipsw-hacktivate Enable hacktivation for creating IPSW (iPhone 3GS only)
--no-color Disable colors for script output --no-color Disable colors for script output
--no-device Enable no device mode --no-device Enable no device mode
--no-version-check Disable script version checking --no-version-check Disable script version checking
For 32-bit devices compatible with restores/downgrades (see README): For 32-bit devices compatible with restores/downgrades (see README):
--activation-records Enable dumping/stitching activation records
--disable-bbupdate Disable bbupdate and enable dumping/stitching baseband
--ipsw-hacktivate Enable hacktivation for creating IPSW (iPhone 2G/3G/3GS only)
--ipsw-verbose Enable verbose boot option (powdersn0w only) --ipsw-verbose Enable verbose boot option (powdersn0w only)
--jailbreak Enable jailbreak option --jailbreak Enable jailbreak option
--memory Enable memory option for creating IPSW --memory Enable memory option for creating IPSW
@ -177,9 +177,9 @@ set_tool_paths() {
else else
warn "Detected Legacy iOS Kit running on temporary storage." warn "Detected Legacy iOS Kit running on temporary storage."
print "* You may run out of space and get errors during the downgrade process." print "* You may run out of space and get errors during the downgrade process."
print "* Please move Legacy iOS Kit to an external drive that is NOT used for the live USB." print "* Please move Legacy iOS Kit to a drive that is NOT used for the live USB."
print "* This means using another external HDD/flash drive to store Legacy iOS Kit on." print "* This may mean using another external HDD/flash drive to store Legacy iOS Kit on."
print "* To be able to use one USB drive only, make sure to enable Persistent Storage for the live USB." print "* To use one USB drive only, create the live USB using Rufus with Persistent Storage enabled."
pause pause
live_cdusb_str="Live - Temporary storage" live_cdusb_str="Live - Temporary storage"
fi fi
@ -188,7 +188,7 @@ set_tool_paths() {
# if "/media" is detected in pwd, warn user of possible permission issues # if "/media" is detected in pwd, warn user of possible permission issues
if [[ $(pwd) == *"/media"* ]]; then if [[ $(pwd) == *"/media"* ]]; then
warn "You may get permission issues like \"Permission denied\" on getting device info." warn "You might get permission errors like \"Permission denied\" on getting device info."
print "* If this is the case, try moving Legacy iOS Kit to the Desktop or Documents folder." print "* If this is the case, try moving Legacy iOS Kit to the Desktop or Documents folder."
fi fi
@ -490,13 +490,15 @@ device_manufacturing() {
return return
fi fi
if [[ $device_newbr == 1 ]]; then if [[ $device_newbr == 1 ]]; then
print "* This $device_type is a new bootrom model, some iOS versions might not be compatible" print "* This $device_type is a new bootrom model"
elif [[ $device_newbr == 2 ]]; then elif [[ $device_newbr == 2 ]]; then
print "* This $device_type bootrom model cannot be determined. Enter DFU mode to get bootrom model" print "* This $device_type bootrom model cannot be determined. Enter DFU mode to get bootrom model"
else else
print "* This $device_type is an old bootrom model" print "* This $device_type is an old bootrom model"
fi fi
if [[ $device_type == "iPhone2,1" && -n $device_serial ]]; then if [[ $device_type == "iPhone2,1" && $device_mode == "DFU" ]]; then
print "* Cannot check for manufacturing date in DFU mode"
elif [[ $device_type == "iPhone2,1" && $device_mode != "DFU" ]]; then
local week=$(echo "$device_serial" | cut -c 2-) local week=$(echo "$device_serial" | cut -c 2-)
local year=$(echo "$device_serial" | cut -c 1) local year=$(echo "$device_serial" | cut -c 1)
case $year in case $year in
@ -573,7 +575,7 @@ device_get_info() {
print "* iOS Version: $device_vers" print "* iOS Version: $device_vers"
print "* ECID: $device_ecid" print "* ECID: $device_ecid"
echo echo
warn "Your device is in recovery mode. Enter DFU mode to continue." log "Your device is in recovery mode. Enter DFU mode to continue."
device_enter_mode DFU device_enter_mode DFU
fi fi
if [[ $device_type == "iPod2,1" ]]; then if [[ $device_type == "iPod2,1" ]]; then
@ -702,7 +704,7 @@ device_get_info() {
fi fi
if [[ $device_mode == "DFU" && $device_proc == 1 ]]; then if [[ $device_mode == "DFU" && $device_proc == 1 ]]; then
warn "Your device $device_type seems to be on an incorrect mode for restoring." log "Your device $device_type seems to be on an incorrect mode for restoring."
print "* Force restart your device and place it in normal or recovery mode, then run the script again." print "* Force restart your device and place it in normal or recovery mode, then run the script again."
print "* Or proceed to do the DFU mode procedure below." print "* Or proceed to do the DFU mode procedure below."
device_dfuhelper norec device_dfuhelper norec
@ -1070,9 +1072,9 @@ device_enter_mode() {
fi fi
input "Press Enter/Return to try again with Wi-Fi SSH (or press Ctrl+C to cancel and try again)" input "Press Enter/Return to try again with Wi-Fi SSH (or press Ctrl+C to cancel and try again)"
read -s read -s
log "Will try again with Wi-Fi SSH..." log "Trying again with Wi-Fi SSH..."
print "* Make sure that your iOS device and PC/Mac are on the same network." print "* Make sure that your iOS device and PC/Mac are on the same network."
print "* To get your device's IP Address, go to: Settings -> Wi-Fi/WLAN -> tap the 'i' next to your network name" print "* To get your iOS device's IP Address, go to: Settings -> Wi-Fi/WLAN -> tap the 'i' next to your network name"
local IPAddress local IPAddress
until [[ -n $IPAddress ]]; do until [[ -n $IPAddress ]]; do
read -p "$(input 'Enter the IP Address of your device: ')" IPAddress read -p "$(input 'Enter the IP Address of your device: ')" IPAddress
@ -1109,16 +1111,16 @@ device_enter_mode() {
local irec_pwned local irec_pwned
local tool_pwned local tool_pwned
if [[ $device_target_powder == 1 && $mode == "downgrade" ]]; then
print "* Note that kDFU mode will likely not work for powdersn0w restores!"
fi
if [[ $device_mode != "Normal" ]]; then if [[ $device_mode != "Normal" ]]; then
irec_pwned=$($irecovery -q | grep -c "PWND") irec_pwned=$($irecovery -q | grep -c "PWND")
fi fi
if [[ $device_mode == "DFU" && $mode != "pwned-ibss" && $device_proc != 4 ]] && (( device_proc < 7 )); then if [[ $device_mode == "DFU" && $mode != "pwned-ibss" && $device_proc != 4 ]] && (( device_proc < 7 )); then
print "* Select Y if your device is in pwned iBSS/kDFU mode." print "* Select Y if your device is in pwned iBSS/kDFU mode."
print "* Select N to place device to pwned DFU mode using ipwndfu/ipwnder." if [[ $device_proc == 5 ]]; then
print "* Select N if this is not the case."
else
print "* Select N to place device to pwned DFU mode using ipwndfu/ipwnder."
fi
read -p "$(input 'Is your device already in pwned iBSS/kDFU mode? (y/N): ')" opt read -p "$(input 'Is your device already in pwned iBSS/kDFU mode? (y/N): ')" opt
if [[ $opt == "Y" || $opt == "y" ]]; then if [[ $opt == "Y" || $opt == "y" ]]; then
log "Pwned iBSS/kDFU mode specified by user." log "Pwned iBSS/kDFU mode specified by user."
@ -1236,7 +1238,7 @@ device_pwnerror() {
error_msg+=$'\n* If you have an AMD CPU, you may have to try again on a machine with an Intel CPU.' error_msg+=$'\n* If you have an AMD CPU, you may have to try again on a machine with an Intel CPU.'
if [[ $platform == "linux" && $device_proc != 4 ]]; then if [[ $platform == "linux" && $device_proc != 4 ]]; then
error_msg+=$'\n* Unfortunately, success rates for checkm8 are low on Linux.' error_msg+=$'\n* Unfortunately, success rates for checkm8 are low on Linux.'
error_msg+=$'\n* Pwning with a Mac or another iOS device using iPwnder Lite are better options.' error_msg+=$'\n* Pwning using a Mac or another iOS device using iPwnder Lite are better options.'
fi fi
error_msg+=$'\n* For more details, read the "Troubleshooting" wiki page in GitHub' error_msg+=$'\n* For more details, read the "Troubleshooting" wiki page in GitHub'
error_msg+=$'\n* Troubleshooting links: error_msg+=$'\n* Troubleshooting links:
@ -1262,7 +1264,7 @@ device_ipwndfu() {
python2=/usr/bin/python python2=/usr/bin/python
elif [[ -z $python2 && ! -e $pyenv2 ]]; then elif [[ -z $python2 && ! -e $pyenv2 ]]; then
warn "python2 is not installed. Attempting to install python2 before continuing" warn "python2 is not installed. Attempting to install python2 before continuing"
print "* You may install python2 from pyenv: pyenv install 2.7.18" print "* You may install python2 from pyenv by running: pyenv install 2.7.18"
if [[ -z $pyenv ]]; then if [[ -z $pyenv ]]; then
warn "pyenv is not installed. Attempting to install pyenv before continuing" warn "pyenv is not installed. Attempting to install pyenv before continuing"
print "* You may install pyenv by running: curl https://pyenv.run | bash" print "* You may install pyenv by running: curl https://pyenv.run | bash"
@ -3188,7 +3190,11 @@ device_ramdisk() {
fi fi
$irecovery -f $ramdisk_path/Kernelcache.dec $irecovery -f $ramdisk_path/Kernelcache.dec
$irecovery -c bootx $irecovery -c bootx
if [[ -n $1 && $1 != "justboot" ]]; then
if [[ $1 == "justboot" ]]; then
log "Device should now boot."
return
elif [[ -n $1 ]]; then
device_find_mode Restore device_find_mode Restore
fi fi
@ -3201,6 +3207,7 @@ device_ramdisk() {
device_sshpass alpine device_sshpass alpine
;; ;;
esac esac
case $1 in case $1 in
"activation" | "baseband" ) "activation" | "baseband" )
local arg="$1" local arg="$1"
@ -3378,11 +3385,6 @@ device_ramdisk() {
print "* If the device did not connect, SSH to the device manually." print "* If the device did not connect, SSH to the device manually."
;; ;;
"justboot" )
log "Device should now boot."
return
;;
* ) log "Device should now be in SSH ramdisk mode.";; * ) log "Device should now be in SSH ramdisk mode.";;
esac esac
echo echo
@ -3408,7 +3410,7 @@ shsh_save_onboard() {
patch_ibss patch_ibss
log "Sending iBSS..." log "Sending iBSS..."
$irecovery -f pwnediBSS $irecovery -f pwnediBSS
sleep 5 sleep 2
else else
device_enter_mode kDFU device_enter_mode kDFU
fi fi
@ -4280,9 +4282,6 @@ device_activate() {
restore_customipsw() { restore_customipsw() {
print "* You are about to restore with a custom IPSW." print "* You are about to restore with a custom IPSW."
print "* Note that this might only work on old bootrom devices."
print "* Also note that Legacy iOS Kit does not support tethered booting."
print "* Legacy iOS Kit will not support tethered downgrades and jailbreaks."
print "* Proceed with caution when restoring to custom IPSWs not made with Legacy iOS Kit." print "* Proceed with caution when restoring to custom IPSWs not made with Legacy iOS Kit."
if [[ $device_newbr == 1 ]]; then if [[ $device_newbr == 1 ]]; then
warn "Your device is a new bootrom model and custom IPSWs might not be compatible." warn "Your device is a new bootrom model and custom IPSWs might not be compatible."