电话/微信号:13308461099,13807313137
解密iPhone的固件
.ipsw 文件中各类文件的解密方法。
准备工具
- Cygwin(运行vfdecrypt及其它Linux工具所需环境,如果您只需使用vfdecrypt也可点此下载所需文件置于vfdecrypt所在目录。)
- VFDecrypt(用于解密主文件系统的工具。)
- img3decrypt(用于解密 img3 文件。)
- WinRAR(或其它任何可以解压ZIP压缩包的工具。)
- HFSExplorer(需要Java运行环境,也可使用收费的PowerISO和其它任何可以解压dmg镜像的工具替代。)
注意事项
从3.1版本开始,苹果改为在Snow Leopard平台下进行封装固件,由于Snow Leopard新的文件管理机制导致在所有非Snow Leopard平台中(比如Leopard或Windows)打开dmg文件后某些类型的文件(比如所有*.lproj目录中的*.strings文件)会显示0字节大小并且文件内容为空。这是由于Snow Leopard把这些文件的内容存放在了资源分支(Resource fork)中,在Leopard及更早版本的Mac OS X平台下虽然无法读取但文件内容仍然存在,但是在Windows中这些文件的内容会连同整个资源分支被丢弃。目前尚未有有效的方法能够解决此问题。
了解 IPSW 文件
文件说明
IPSW文件,也就是升级iPhone/iPod touch时所使用的固件安装包,使用的是ZIP压缩算法,可以直接使用WinRAR等工具打开。
以iPod touch第一代2.2.1固件为例,打开以后可以看见内有如下文件:
- .fseventsd(目录)
- Firmware(目录)
- 018-4437-16.dmg
- 018-4443-16.dmg
- 018-4490-10.dmg
- kernelcache.release.s5l8900x
- Restore.plist
(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 文件中获取。
解密 img3 文件
需要用到 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
如果您在 Cygwin 环境中操作
- 把下载下来的文件解压得到vfdecrypt.exe,放到C:/Cygwin/bin目录中(假设Cygwin安装在C:/Cygwin,下同)。
- 使用 WinRAR 打开 .ipsw 文件,从中解压出系统内存盘(以2.2.1为例,文件名为018-4490-10.dmg),放到C:/Cygwin/home/【您的用户名】。
- 启动 Cygwin,敲入以下命令:
vfdecrypt -i 018-4490-10.dmg -o 018-4490-10-decrypted.dmg -k ee4eeeb62240c1378c739696dff9fef2c88834e98877f55a29c147e7d5b137967197392a
稍等片刻,便能在C:/Cygwin/home中看到解密后的文件 018-4490-10-decrypted.dmg。使用 HFSExplorer 打开即可。
如果您没有或不想安装 Cygwin
- 在您喜欢的地方新建一个文件夹。
- 把vfdecrypt.exe解压到这个文件夹中,同样地把本文开头所说的运行库(点此下载)也一并解压到这个文件夹中。
- 使用 WinRAR 打开 .ipsw 文件,从中解压出系统内存盘,同样放到这个文件夹中。
- 在“开始”菜单中点击“运行”,输入“cmd”并回车,打开命令提示符窗口,并定位到刚才建立的文件夹
- 敲入以下命令:
vfdecrypt -i 018-4490-10.dmg -o 018-4490-10-decrypted.dmg -k ee4eeeb62240c1378c739696dff9fef2c88834e98877f55a29c147e7d5b137967197392a
稍等片刻,便能在该文件夹中看到已经解密的 018-4490-10-decrypted.dmg。使用 HFSExplorer 打开即可。
使用 GenPass 从已解密的恢复内存盘提取 VFDecrypt 密匙
除了到VFDecrypt 密匙页面查阅已知的 VFDecrypt 密匙外,您也可以自己使用 GenPass 从已解密的恢复内存盘中计算出 VFDecrypt 密匙。如果您成功这么做,欢迎把您计算并验证过的密匙添加到VFDecrypt 密匙页面供大家使用。
下载源代码并编译 GenPass
- 从 http://code.google.com/p/chronicdev/wiki/GenPass 下载 GenPass 的源代码,保存为 GenPass.c 放置于C:/Cygwin/home/【您的用户名】中。
- 启动 Cygwin,敲入以下命令编译 GenPass 并复制到系统目录:
gcc GenPass.c -lcrypto -o GenPass
cp ./GenPass.exe /bin
使用 GenPass 计算密匙
解密命令:
GenPass.exe <平台类型> <恢复内存盘> <系统内存盘>
其中“平台类型”与设备所使用处理器类型有关,比如 iPod touch 1G 为 s5l8900x,要知道自己的设备的平台类型,请使用 WinRAR 打开您所使用的设备的 .ipsw 固件文件,从中找到一个约4M的文件名类似于“kernelcache.release.s5l8900x”的文件,其中最后一个“.”号后面的即为“平台类型”