Decryptipsw.sh

Decryptipsw.sh

出自iPhone.org.hk

(修訂版本間差異)
跳轉到: 導航, 搜尋

Javacom (對話 | 貢獻)
(新頁面: <code> #!/bin/sh #v0.3 if [ $# -lt 1 ] then echo "usage : $0 iPhone1,1_2.0_5A274d_Restore.ipsw" exit 0 else IPSWNAMES=$@ fi DDONE=0 for IPSWNAME in $IPSWNAMES do if [ -f "$IPSWNAME"...)
下一個→

在2008年6月1日 (日) 14:15所做的修訂版本

  1. !/bin/sh
  2. v0.3

if [ $# -lt 1 ] then

 echo "usage : $0 iPhone1,1_2.0_5A274d_Restore.ipsw"
 exit 0

else

 IPSWNAMES=$@

fi DDONE=0 for IPSWNAME in $IPSWNAMES do if [ -f "$IPSWNAME" ] then PWD=`pwd` rm -f Restore.plist unzip -o $IPSWNAME Restore.plist > /dev/null 2>/dev/null if [ -f Restore.plist ]; then DEVICECLASS=`defaults read $PWD/Restore DeviceClass` PRODUCTVERSION=`defaults read $PWD/Restore ProductVersion` BUILDVERSION=`defaults read $PWD/Restore ProductBuildVersion` RESTORERAMDISK=`defaults read $PWD/Restore RestoreRamDisks | awk '/User/ { split($0, line, "\""); printf("%s\n", line[2]); }'` SYSTEMRESTOREIMAGE=`defaults read $PWD/Restore SystemRestoreImages | awk '/User/ { split($0, line, "\""); printf("%s\n", line[2]); }'` unzip -o $IPSWNAME $RESTORERAMDISK > /dev/null 2>/dev/null FILEFORMAT=`hexdump -n4 -e '"%c%c%c%c\n"' $RESTORERAMDISK` if [ "$FILEFORMAT" == "8900" ] then

 DECRYPTKEY=`strings $RESTORERAMDISK | egrep "^[0-9a-fA-F]{72}\$"`
 if [ "$DECRYPTKEY" == "" ]; then
   RAMDISKLENGTH=`hexdump -s12 -n4 -e '"%d\n"' $RESTORERAMDISK`
   RAMDISKCOUNT=`echo $RAMDISKLENGTH / 512 | bc`
   dd if=$RESTORERAMDISK of=$DEVICECLASS$PRODUCTVERSION$BUILDVERSION.stripped.dmg bs=512 skip=4 count=$RAMDISKCOUNT conv=sync  > /dev/null 2>/dev/null
   openssl enc -d -in $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.stripped.dmg -out $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.ramdisk.dmg  -aes-128-cbc -K 188458A6D15034DFE386F23B61D43774 -iv 0  > /dev/null 2>/dev/null
   rm -f $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.stripped.dmg
 else
   dd if=$RESTORERAMDISK of=$DEVICECLASS$PRODUCTVERSION$BUILDVERSION.ramdisk.dmg bs=512 skip=4 conv=sync  > /dev/null 2>/dev/null
 fi

else

 RAMDISKLENGTH=`hexdump -s12 -n4 -e '"%d\n"' $RESTORERAMDISK`
 RAMDISKCOUNT=`echo $RAMDISKLENGTH / 32 | bc`
 dd if=$RESTORERAMDISK of=$DEVICECLASS$PRODUCTVERSION$BUILDVERSION.ramdisk.dmg bs=32 skip=1 count=$RAMDISKCOUNT conv=sync  > /dev/null 2>/dev/null

fi rm -f $RESTORERAMDISK DECRYPTKEY=`strings $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.ramdisk.dmg | egrep "^[0-9a-fA-F]{72}\$"` if [ "$DECRYPTKEY" == "" ]; then

 echo "Decrypt failed : $IPSWNAME"

else unzip -o $IPSWNAME $SYSTEMRESTOREIMAGE > /dev/null 2>/dev/null ./vfdecrypt -i $SYSTEMRESTOREIMAGE -o $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.decrypted.dmg -k $DECRYPTKEY > /dev/null 2>/dev/null rm -f $SYSTEMRESTOREIMAGE echo md5 $IPSWNAME echo "RAMDISK = $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.ramdisk.dmg" echo "FILESYSTEM = $DEVICECLASS$PRODUCTVERSION$BUILDVERSION.decrypted.dmg" echo "DECRYPTKEY = $DECRYPTKEY" DDONE=1 fi else

 echo "Invalid ipsw file $IPSWNAME"

fi else echo "$IPSWNAME NOT FOUND" fi done if [ "$DDONE" == "1" ]; then

 echo "Job Completed!!!"

fi