
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Распакуйте ключ расшифровки, используя данные, встроенные в blob данных аутентификации AEA.
[!NOTE] В OTA до iOS 18.0 beta 3 не были встроены данные аутентификации; для таких 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 Archives (см. следующий раздел).
Ресурсы (включая OTA-обновления) имеют особую структуру и не могут быть извлечены стандартными инструментами (aa). Их можно расшифровать обычным способом, в результате чего получится Apple Archive, который не извлекается с помощью aa (мы будем называть такие архивы «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 будет объявлен устаревшим.