Игрок пишет в чат «hey siri, сколько будет 1000 разделить на 64?», и через секунду настоящая Siri отвечает: «15.625». Это не ChatGPT, переодетый в Siri, а ответ с серверов Apple, полученный с Linux-машины.
Исследователь под ником Zerotistic решил, что его Minecraft-серверу не хватает голосового ассистента от Apple. Подделывать её через LLM он принципиально не стал: ему был нужен ответ именно от Apple, каким бы бестолковым он ни оказался. Дальше началась история, на которую ушли недели работы с ARM64.
➡️Шаг 1. Протокол ACE. Siri общается с сервером guzzoni.apple.com. Обычные GET и POST сервер отклонял с ошибкой 406. Выяснилось, что HTTP-метод называется буквально
ACE, причём сервер принимает его только по HTTP/2. В ответ приходят байты AA CC EE 02, а дальше идёт сжатый zlib поток бинарных plist-команд. Из системного фреймворка автор вытащил реестр из 1467 классов команд Siri.➡️Шаг 2. Аутентификация. Без правильного поля
sessionValidationData Siri отказывает в доступе. Старые эмуляторы Apple NAC здесь не помогли: нынешняя Siri использует более новую реализацию FairPlay SAP.➡️Шаг 3. Самое безумное. Автор достал из macOS бинарник
assistantd и запустил его криптографические функции в эмуляторе Unicorn прямо на Linux. Для этого пришлось вырезать из кода Pointer Authentication (защиту arm64e), вручную разобрать цепочки фиксапов Mach-O и написать заглушки для системных вызовов Darwin. Неожиданно выяснилось, что код не требует ни серийного номера, ни модели Mac: он только проверяет, не запущен ли в виртуалке. На выходе получалось 501 байт подписи, и Siri отвечала AssistantLoaded.➡️Шаг 4. Сюрпризы напоследок. Без синхронизации данных Siri молча игнорировала все вопросы. Две команды запроса нужно было разделять паузой в 250 мс. На многие вопросы Siri отвечала «Here's what I found», а сами результаты прятала в protobuf внутри plist, и их пришлось декодировать отдельно.
Итог: Python-клиент в несколько строк кода и мод для Minecraft. Siri отвечает в чате на вопросы про погоду в Париже, решает примеры и местами несёт полную чушь. Автор доволен: работает же)
Код в открытый доступ он выкладывать не стал. Клиент Siri без Apple ID на извлечённом коде Apple, по его словам, выглядит как отличный способ получить письмо от юристов. Зато все болезненные места он подробно описал в блоге.
Как думаете, это повод для Apple срочно фиксить волну? А вы какого бы ассистента вы бы поселили на своём сервере? Пиши в комментариях 👇
Hey Siri, welcome to my Minecraft server — zerotistic.blog
🌚 @poxek | 🌚 @poxek_ai | 📲MAX