Разработчики мобильных приложений из Applidium удалось это выяснить в протоколе связи, который использует Siri, так что теперь этот механизм распознавания речи теоретически может работать на любом устройстве, включая Android, если вы знаете, где получить идентификатор iPhone 4S без внесения его в черный список Apple. Ключевым элементом Siri является то, как программа взаимодействует с сервером (Siri работает только при наличии доступа в Интернет).
Трафик идет по протоколу TCP, порт 443, на сервер 17.174.4.4. Если вы попытаетесь связаться с сервером https://17.174.4.4/ с рабочего стола вы увидите, что он предъявляет сертификат на имя guzzoni.apple.com ( Дидье Гуццони от компании SRI – одного из создателей этой технологии).
Поскольку трафик защищен протоколом https, прослушать его сниффером невозможно.
Ребята из Applidium решили, что проще всего настроить фейковый https-сервер и DNS-сервер и смотреть запросы от Siri. Конечно, подделать настоящий сертификат guzzoni.apple.com не получится, но можно попробовать от имени своего удостоверяющего центра выдать собственный действительный сертификат поддельному https-серверу guzzoni.apple.com .
Поскольку iPhone позволяет добавлять на телефон сертификаты от произвольных центров сертификации, этот метод сработал — и теперь Siri может успешно обмениваться командами с собственным сервером! После этого хакеры смогли спокойно разобраться в протоколе Siri, использующем необычные методы, не соответствующие стандартам HTTP. Заголовок выглядит примерно так:
Как видите, вместо обычного GET используется метод ACE, в качестве url запрашивается «/ace», поле Длина контента указано почти 2 ГБ.ACE /ace HTTP/1.0 Host: guzzoni.apple.com User-Agent: Assistant(iPhone/iPhone4,1; iPhone OS/5.0/9A334) Ace/1.0 Content-Length: 2000000000 X-Ace-Host: 4620a9aa-88f4-4ac1-a49d-e2012910921
Поле X-Ace-хост каким-то образом привязан к идентификатору устройства (GUID).
Само тело запроса отправляется в двоичной форме.
Он начинается с 0xAACCEE. Разработчики предположили, что дальше идет архивированный контент, то есть данные передаются в сжатом виде.
Так и получилось: архиватор zlib успешно распознал архив в двоичном коде (начиная с пятого байта после заголовка AACCCEE).
Распакованные данные снова выявили двоичный код, но с включенным текстом.
Среди отдельных слов внимание разработчиков привлекли bplist00 .
Очевидно, это ссылка на двоичный файл список .
Изучив данные чуть более внимательно, разработчики обнаружили несколько разных фрагментов:
- Фрагменты, начинающиеся с 0x020000xxxx, представляют собой пакеты «plist», xxxx соответствует размеру двоичных данных.
список , которые следуют за заголовком.
- Фрагменты, начинающиеся с 0x030000xxxx, представляют собой «пинг-пакеты», которые iPhone отправляет на сервер Siri для поддержания соединения.
Здесь xx соответствует порядковому номеру проверки связи.
- Фрагменты, начинающиеся с 0x040000xxxx, представляют собой «понговые» пакеты, которые сервер Siri отправляет на iPhone в ответ на пинги.
Как вы могли догадаться, xx соответствует порядковому номеру пакета.
Разработчики обнаружили, что Siri отправляет на сервер аудиофрагменты, сжатые кодеком Спеекс , а также везде вставляет идентификатор устройства iPhone 4S. Программа и сервер обмениваются огромным количеством информации по малейшему поводу.
Например, когда распознавание речи работает, серверы Apple отправляют метки времени и «уровень доверия» для каждый слова.
Для самостоятельной работы с протоколом Siri вы можете использовать набор инструментов , созданный программистами Applidium. Теги: #Смартфоны #Siri #распознавание речи #HTTPS #guid #zlib #iphone 4s #Applidium #CFPropertyList
-
Cisco Csr 1000V: Обзор Функций. Часть 1
19 Oct, 24 -
Стив Возняк Использует Nexus One
19 Oct, 24 -
Внутри Нового Imac
19 Oct, 24