.ipsw 文件中各類文件的解密方法。
從3.1版本開始,蘋果改為在Snow Leopard平臺下進行封裝固件,由于Snow Leopard新的文件管理機制導致在所有非Snow Leopard平臺中(比如Leopard或Windows)打開dmg文件后某些類型的文件(比如所有*.lproj目錄中的*.strings文件)會顯示0字節大小并且文件內容為空。這是由于Snow Leopard把這些文件的內容存放在了資源分支(Resource fork)中,在Leopard及更早版本的Mac OS X平臺下雖然無法讀取但文件內容仍然存在,但是在Windows中這些文件的內容會連同整個資源分支被丟棄。目前尚未有有效的方法能夠解決此問題。
IPSW文件,也就是升級iPhone/iPod touch時所使用的固件安裝包,使用的是ZIP壓縮算法,可以直接使用WinRAR等工具打開。
以iPod touch第一代2.2.1固件為例,打開以后可以看見內有如下文件:
(3.x多了一個BuildManifesto.plist文件,不過我們不需要用到。)
其中,Firmware目錄存放著刷新固件時用于引導設備的核心文件,這里暫時不需要用到;另外三個*.dmg文件則是iPhone/iPod touch的系統鏡像。
Restore.plist文件描述了各個文件的用途。使用記事本等文本編輯器即可打開。其中包含了如下內容:
RestoreRamDisks
Update
018-4437-16.dmg
User
018-4443-16.dmg
從中可以知道,018-4437-16.dmg是“升級內存盤”(Update Ramdisk),018-4443-16.dmg是“恢復內存盤”(Restore Ramdisk),使用iTunes“升級”固件時實際上是讓設備啟動并加載018-4437-16.dmg,而“恢復”固件時啟動的則是018-4443-16.dmg。如果要自行提取 VFDecrypt 密匙的話,就要從恢復內存盤里提取。
繼續往下,會看到這一段:
SystemRestoreImages
User
018-4490-10.dmg
這段內容表示,刷新固件時往機器上寫入的“系統內存盤”(System Ramdisk)為018-4490-10.dmg,一般也是占整個固件體積最多的文件,因為里面包含iPhone/iPod Touch的文件系統。也就是說,提取文件系統就是提取這個文件的內容。
可能有人會問,為什么要特別說明Restore.plist里的內容呢?回答是,因為這三個dmg鏡像的文件名不是固定的,不同版本的文件名不一樣,所以要自己看Restore.plist來了解每一個文件是干什么的。
系統內存盤 (System Ramdisk) 是 IPSW 文件中最大的文件(大約200MB),每個設備型號對應一個 VFDecrypt 密匙。解密這個文件需要用到VFDecrypt工具,這就是本文主要討論的。
升級內存盤 (Update Ramdisk) 和恢復內存盤 (Restore Ramdisk) 以及其他文件使用被稱作 img3 的算法加密。加密密匙對應設備處理器,每種類型的處理器對應一對IV和KEY密匙。請使用img3decrypt來解密這類文件。
要獲取解密這兩類文件的密匙,請參閱 VFDecrypt 密匙 頁面,或從 PwnageTool 的 *.plist 文件中獲取。
需要用到 img3decrypt
解密需要用到的KEY和IV密匙請在這里獲取:VFDecrypt 密匙
解密命令:
img3decrypt.exe <輸入文件> <輸出文件> [-k] [-iv]
如果不給出 KEY 和 IV 參數,則工具會輸出 KBAG 數據。如果您愿意,可以使用 iPhone/iPod Touch 上的硬件 AES 引擎從這些有限的 KBAG 數據中計算出 KEY 和 IV。如果您成功這么做,歡迎把您計算并驗證過的 KEY 和 IV 添加到VFDecrypt 密匙頁面供大家使用。
關于 img3decrypt 工具的更多功能及使用方法,請移步 http://code.google.com/p/img3decrypt/
需要用到 vfdecrypt
解密需要用到的密匙請在這里獲取:VFDecrypt 密匙。在3.x固件中,您也可以使用 GenPass 從已解密的恢復內存盤提取出密匙。
在本例中我們使用的密匙是 ee4eeeb62240c1378c739696dff9fef2c88834e98877f55a29c147e7d5b137967197392a
vfdecrypt -i 018-4490-10.dmg -o 018-4490-10-decrypted.dmg -k ee4eeeb62240c1378c739696dff9fef2c88834e98877f55a29c147e7d5b137967197392a
稍等片刻,便能在C:/Cygwin/home中看到解密后的文件 018-4490-10-decrypted.dmg。使用 HFSExplorer 打開即可。
vfdecrypt -i 018-4490-10.dmg -o 018-4490-10-decrypted.dmg -k ee4eeeb62240c1378c739696dff9fef2c88834e98877f55a29c147e7d5b137967197392a
稍等片刻,便能在該文件夾中看到已經解密的 018-4490-10-decrypted.dmg。使用 HFSExplorer 打開即可。
除了到VFDecrypt 密匙頁面查閱已知的 VFDecrypt 密匙外,您也可以自己使用 GenPass 從已解密的恢復內存盤中計算出 VFDecrypt 密匙。如果您成功這么做,歡迎把您計算并驗證過的密匙添加到VFDecrypt 密匙頁面供大家使用。
gcc GenPass.c -lcrypto -o GenPass
cp ./GenPass.exe /bin
解密命令:
GenPass.exe <平臺類型> <恢復內存盤> <系統內存盤>
其中“平臺類型”與設備所使用處理器類型有關,比如 iPod touch 1G 為 s5l8900x,要知道自己的設備的平臺類型,請使用 WinRAR 打開您所使用的設備的 .ipsw 固件文件,從中找到一個約4M的文件名類似于“kernelcache.release.s5l8900x”的文件,其中最后一個“.”號后面的即為“平臺類型”