.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”的文件,其中最后一个“.”号后面的即为“平台类型”