解密iPhone的固件
  • 解密iPhone的固件
电话/微信号: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 环境中操作

  1. 把下载下来的文件解压得到vfdecrypt.exe,放到C:/Cygwin/bin目录中(假设Cygwin安装在C:/Cygwin,下同)。
  2. 使用 WinRAR 打开 .ipsw 文件,从中解压出系统内存盘(以2.2.1为例,文件名为018-4490-10.dmg),放到C:/Cygwin/home/【您的用户名】
  3. 启动 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

  1. 在您喜欢的地方新建一个文件夹。
  2. 把vfdecrypt.exe解压到这个文件夹中,同样地把本文开头所说的运行库(点此下载)也一并解压到这个文件夹中。
  3. 使用 WinRAR 打开 .ipsw 文件,从中解压出系统内存盘,同样放到这个文件夹中。
  4. 在“开始”菜单中点击“运行”,输入“cmd”并回车,打开命令提示符窗口,并定位到刚才建立的文件夹
  5. 敲入以下命令:
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”的文件,其中最后一个“.”号后面的即为“平台类型”