From 9858204dd4287b1eeb2328f4025a52efbf8c8c45 Mon Sep 17 00:00:00 2001 From: Nebula Date: Sat, 17 Sep 2022 10:22:48 -0400 Subject: [PATCH] edits --- README.md | 7 ++-- palera1n.sh | 116 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 77 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index d9535e5..6ec6c0d 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,16 @@ iOS 15.0-15.4.1 checkm8 "jailbreak" # What does this do? -Currently, it just boots the device with AMFI patches. In the future, I'd want this to install the Pogo app automatically when it's public. +It boots the device with AMFI patches, and installs Pogo by Amy. # How to use 1. Install libimobiledevice - It's needed for `ideviceenterrecovery` and `ideviceinfo` 2. Clone this repo with `git clone https://github.com/itsnebulalol/palera1n && cd palera1n` 3. Prepare your blob for the current version you're on -4. Run `./palera1n.sh path/to/blob.shsh2` -5. Make sure your device is in normal mode +4. Run `./palera1n.sh path/to/blob.shsh2 install` + - If you want to start from DFU, run `./palera1n.sh path/to/blob.shsh2 --dfu install` +5. Make sure your device is in normal mode, if you didn't start from DFY 6. Follow the steps - Right now, getting into DFU is steps for A11, please suppliment the steps for your device diff --git a/palera1n.sh b/palera1n.sh index aea0922..10e9d09 100755 --- a/palera1n.sh +++ b/palera1n.sh @@ -52,39 +52,65 @@ echo "palera1n | Version $version" echo "Written by Nebula | Some code by Nathan | Patching commands by Mineek | Loader app by Amy" echo "" -# Get device's iOS version from ideviceinfo +# Get device's iOS version from ideviceinfo if in normal mode echo "[*] Getting device version..." -version=$2 +if [ "$2" = '--dfu' ]; then + if [ -z "$3" ]; then + echo "[-] When using --dfu, please pass the version you're device is on" + exit + else + version=$3 + fi +else + if [ "$os" = 'Darwin' ]; then + if ! (system_profiler SPUSBDataType 2> /dev/null | grep ' iPhone:' >> /dev/null); then + echo "[*] Waiting for device in normal mode" + fi -if [ -z "$version" ]; then - echo "[-] No version specified" - exit + while ! (system_profiler SPUSBDataType 2> /dev/null | grep ' iPhone:' >> /dev/null); do + sleep 1 + done + + defaults write -g ignore-devices -bool true + defaults write com.apple.AMPDevicesAgent dontAutomaticallySyncIPods -bool true + killall Finder + else + if ! (lsusb 2> /dev/null | grep ' iPhone:' >> /dev/null); then + echo "[*] Waiting for device in normal mode" + fi + + while ! (lsusb 2> /dev/null | grep ' iPhone:' >> /dev/null); do + sleep 1 + done + fi fi # Put device into recovery mode, and set auto-boot to true -echo "[*] Switching device into recovery mode..." -ideviceenterrecovery $(ideviceinfo | grep "UniqueDeviceID: " | sed 's/UniqueDeviceID: //') > /dev/null -if [ "$os" = 'Darwin' ]; then - if ! (system_profiler SPUSBDataType 2> /dev/null | grep ' Apple Mobile Device (Recovery Mode):' >> /dev/null); then - echo "[*] Waiting for device to reconnect in recovery mode" - fi +if [ ! "$2" = '--dfu' ]; then + echo "[*] Switching device into recovery mode..." + ideviceenterrecovery $(ideviceinfo | grep "UniqueDeviceID: " | sed 's/UniqueDeviceID: //') > /dev/null + if [ "$os" = 'Darwin' ]; then + if ! (system_profiler SPUSBDataType 2> /dev/null | grep ' Apple Mobile Device (Recovery Mode):' >> /dev/null); then + echo "[*] Waiting for device to reconnect in recovery mode" + fi - while ! (system_profiler SPUSBDataType 2> /dev/null | grep ' Apple Mobile Device (Recovery Mode):' >> /dev/null); do - sleep 1 - done -else - if ! (lsusb 2> /dev/null | grep ' Apple Mobile Device (Recovery Mode):' >> /dev/null); then - echo "[*] Waiting for device to reconnect in recovery mode" - fi + while ! (system_profiler SPUSBDataType 2> /dev/null | grep ' Apple Mobile Device (Recovery Mode):' >> /dev/null); do + sleep 1 + done + else + if ! (lsusb 2> /dev/null | grep ' Apple Mobile Device (Recovery Mode):' >> /dev/null); then + echo "[*] Waiting for device to reconnect in recovery mode" + fi - while ! (lsusb 2> /dev/null | grep ' Apple Mobile Device (Recovery Mode):' >> /dev/null); do - sleep 1 - done + while ! (lsusb 2> /dev/null | grep ' Apple Mobile Device (Recovery Mode):' >> /dev/null); do + sleep 1 + done + fi + $dir/irecovery -c "setenv auto-boot true" + $dir/irecovery -c "saveenv" fi -$dir/irecovery -c "setenv auto-boot true" -$dir/irecovery -c "saveenv" -# Grab more info from recovery +# Grab more info echo "[*] Getting device info..." cpid=$($dir/irecovery -q | grep CPID | sed 's/CPID: //') model=$($dir/irecovery -q | grep MODEL | sed 's/MODEL: //') @@ -92,29 +118,33 @@ deviceid=$($dir/irecovery -q | grep PRODUCT | sed 's/PRODUCT: //') ipswurl=$(curl -sL "https://api.ipsw.me/v4/device/$deviceid?type=ipsw" | $dir/jq '.firmwares | .[] | select(.version=="'$version'") | .url' --raw-output) # Have the user put the device into DFU -echo "[*] Press any key when ready for DFU mode" -read -n 1 -s -step 3 "Get ready" -step 4 "Hold volume down + side button" & -sleep 3 -irecovery -c reset -step 1 "Keep holding" -step 10 'Release side button, but keep holding volume down' -sleep 1 +if [ ! "$2" = '--dfu' ]; then + echo "[*] Press any key when ready for DFU mode" + read -n 1 -s + step 3 "Get ready" + step 4 "Hold volume down + side button" & + sleep 3 + irecovery -c reset + step 1 "Keep holding" + step 10 'Release side button, but keep holding volume down' + sleep 1 +fi # Check if device entered dfu -if [ "$os" = 'Darwin' ]; then - if ! (system_profiler SPUSBDataType 2> /dev/null | grep ' Apple Mobile Device (DFU Mode):' >> /dev/null); then - echo "[-] Device didn't go in DFU mode, please rerun the script and try again" - exit 1 - fi -else - if ! (lsusb 2> /dev/null | grep ' Apple Mobile Device (DFU Mode):' >> /dev/null); then - echo "[-] Device didn't go in DFU mode, please rerun the script and try again" - exit 1 +if [ ! "$2" = '--dfu' ]; then + if [ "$os" = 'Darwin' ]; then + if ! (system_profiler SPUSBDataType 2> /dev/null | grep ' Apple Mobile Device (DFU Mode):' >> /dev/null); then + echo "[-] Device didn't go in DFU mode, please rerun the script and try again" + exit + fi + else + if ! (lsusb 2> /dev/null | grep ' Apple Mobile Device (DFU Mode):' >> /dev/null); then + echo "[-] Device didn't go in DFU mode, please rerun the script and try again" + exit + fi fi + echo "[*] Device entered DFU!" fi -echo "[*] Device entered DFU!" sleep 2 $dir/gaster pwn > /dev/null