Локальный прокси-сервер для Siri

    История с недавним взломом протокола коммуникации Siri получила естественное продолжение: разработан прокси-сервер SiriProxy, с помощью которого можно легко добавить дополнительную функциональность к этой программе. Например, через голосовой интерфейс можно посылать текстовые сообщения на произвольные сайты или активировать голосовое управление устройствами в домашней сети. Скажем, вот плагин для термостата:

    — Siri, какая сейчас температура в комнате?
    — Двадцать градусов.
    — Понизь до восемнадцати.
    — OK.

    Напомним, что после подделки SSL-сертификата и установки своего DNS-сервера программа Siri обменивается данным с вашим собственным сервером, а не с дефолтным guzzoni.apple.com.

    Задача SiriProxy — подключать к Siri свои плагины для управления домашними устройствами, и маршрутизировать этот трафик не через интернет, а через домашнюю сеть, то есть локальный прокси-сервер. Программа не помогает использовать Siri на других устройствах, в том числе на Android, хотя если у вас есть валидный UDID и вы смогли установить Siri на Android, то вполне можно использовать также и SiriProxy.

    Демо SiriProxy


    Механизм установки своего прокси впервые описан разработчиками из компании Applidium, ну а сейчас на Youtube можно найти несколько видеоинструкций с описанием каждого этапа.

    1. Создать собственный центр сертификации через OpenSSL,

    /System/Library/OpenSSL/misc/CA.pl -newca

    выдать своему серверу сертификат на имя guzzoni.apple.com. Секретный ключ и сертификат сохраняются под названиями server.passless.key и server.passless.crt в папке SiriProxy.

    Пошаговая инструкция


    2. Загрузить на телефон открытый сертификат центра сертификации, например, можно отправить его себе по почте и просто кликнуть мышкой.

    3. Установить в локальной сети DNS-сервер, например, dnsmasq.



    4. Установить компоненты Ruby:
    • httparty
    • open-uri
    • json
    • CFPropertyList
    • uuidtools
    • eventmachine
    5. Запустить start.rb на правах рута (поскольку он должен слушать TCP/443)

    6. Запустить программу Siri и проверить работоспособность прокси. На фразу «Test Siri proxy» он должен ответить «Siri Proxy is up and running!»

    После этого можно подключать к программе свои модули, которые будут работать через свой прокси. Теоретически, можно тунеллировать трафик через VPN и управлять устройствами в домашней сети через интернет. Если iPhone 4s джейлбрейкнут, то можно внести изменения в /etc/hosts, чтобы туннелировать через домашнюю сеть только трафик Siri.

    Со своего прокси вы можете направить трафик куда угодно. Например, вот плагин eliza.rb для общения с известным чатботом Elize.

    Support the author
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 11

      +2
      Думаю, если Apple откроет API Siri, пусть даже платно, это будет пользоваться очень большим спросом. Хотя сдаётся мне, что они этого не сделают :)
        +5
        А я думаю, выпустят. Вспомните, когда-то Apple и SDK для iOS не собирались выпускать. Потом появился хакреский SDK, а потом и официальный. Думаю, тут будет примерно то же самое… Но вот когда это случится — другой вопрос.
          +3
          Про это уже были размышления в инете. «Когда/если Apple откроет SDK для Siri, то правила попадания в Appstore покажутся вам цветочками по сравнению с драконовскими правилами для Siri». Что логично.
            –2
            Разве они xоть раз сделали что-то подобное?..

            Вот именно.
              0
              Думаю чем больше пользователей, тем быстрее обучается интеллект. Так что должны открыть когда-нибудь.
              0
              А туннелирование через vpn не испортит возможность определять местоположение по wifi роутеру?
                0
                Мне вот интересно стало как Siri работает. Распознование речи, я так понимаю, происходит на клиентской стороне, то есть средствами самого телефона (круто, че). И потом распознаный текст передается на сервер по https-у. Тот соответсвенно присылает в ответ некие команды устройству и текст, который нужно произнести в ответ.

                Возникает вопросы: кто хранит контекст «беседы», и кто делает магию понимания различных формулировок? Этот прокси штатные завпросы Siri пересылает потом на сервер эпл для обработки, или обрабатывает сам? Получив команду понизить температуру, например, кто именно понижает температуру, сам сервер или телефон?

                Кажется мне, что телефон в данное случаи просто распознавалка/синтезатор голоса, но все равно какое-то недопонимание и ощущение магии остается.
                  +5
                  Распознавание речи происходит на сервере. Вот тут, к примеру, об этом написано.

                  Если же мы говорим о прокси, то исходники простые и понятные. Из них, в частности, быстро становится ясно, что разбор фраз управления термостатом происходит довольно топорно при помощи регулярок, и самим термостатом управляет плагин на прокси, а не телефон.
                    +8
                    В ДЦ Apple сидят сотни китайцев и распознают аудио, которое отправляет им телефон :)
                      0
                      Я не удивлюсь, если это будет правдой.
                    +1
                    Очень напоминает историю с kinekt :)
                    Вышло устройство (с относительно новой технологией, качества которой нету в аналогах(и для siri и для Kinekt пример правдив)) — взломали, и начали писать другой функционал под себя!

                    Only users with full accounts can post comments. Log in, please.