
AEA OTA/IPSW decryption
AEA OTA/IPSW 解密
get_key.py
requestspyhpkeaastuff
aastuff_standalone
get_key.pypip3 install -r requirements.txt
[!NOTE] 强烈建议使用虚拟环境:
python3 -m venv .env # 仅需执行一次 source .env/bin/activate pip3 install -r requirements.txt # 仅需执行一次之后再次运行时,只需激活虚拟环境:
source .env/bin/activate
aastuff/aastuff_standalone你可以向 makefile 传递两个选项:
DEBUG=1:调试构建(调试输出、无优化、包含调试信息)HPKE=1:启用 HPKE 支持构建(需要 macOS 14.0+)make [DEBUG=1] [HPKE=1]
get_key.py 获取密钥使用 AEA 认证数据块中嵌入的数据解包解密密钥。
[!NOTE] iOS 18.0 beta 3 之前的 OTA 没有嵌入认证数据;对于这些 OTA,你必须使用响应中提供的解密密钥。macOS 是个例外,它一直都有嵌入的认证数据。
source .env/bin/activate # 如果你使用了虚拟环境
python3 get_key.py <path to AEA>
aea decrypt -i <path to AEA> -o <decrypted output file> -key-value 'base64:<key in base64>'
# 或者
./aastuff -i <path to AEA> -o <decrypted output folder> -d -k <key in base64>
# 或者,使用网络获取私钥
./aastuff -i <path to AEA> -o <decrypted output folder> -d -n
对于 IPSW,你将获得解包后的文件(例如,090-34187-052.dmg.aea 将解密为 090-34187-052.dmg)。
对于 assets,你将获得特殊构造的 Apple Archive(参见下一节)。
Assets(包括 OTA 更新)是特殊构造的,无法使用标准(aa)工具提取。它们可以正常解密,解密结果是一个无法用 aa 提取的 Apple Archive(我们称之为“asset archives”)。必须使用 aastuff 来提取它们。
# 必要时先解密
aea decrypt -i <path to AEA> -o <decrypted asset archive> -key-value 'base64:<key in base64>'
./aastuff -i <decrypted asset archive> -o <output folder>
aastuff 也可以处理尚未解密的 asset archives:
./aastuff -i <path to AEA> -o <output folder> -k <key in base64>
运行 ./aastuff -h 查看完整用法信息。
[!NOTE]
aastuff_standalone具有更多功能,包括文件列表和选择性提取。运行./aastuff_standalone -h查看完整用法信息。
aastuff 使用 AAAssetExtractor,即 libAppleArchive 中的函数来提取 asset archives。然而,该 API 相当简陋,不提供选择性提取等功能。
aastuff_standalone 使用(大部分)标准 libAppleArchive 函数来提取 asset archives。它提供文件列表和选择性提取等功能,但尚未针对所有可能的 asset archives 进行全面验证。
目前,两者的构建和使用方式相同。一旦 aastuff_standalone 完全可用并通过验证,aastuff 将被弃用。