История реверс инжиниринга одного пушистого зверька Хабрахабр. Тихим утром третьего января, когда Москва уже дремала после новогодних праздников, в нашей квартире раздался звонок в дверь. Почта наконец то доставила посылку с новогодними подарками, заказанными на Амазоне. Среди прочего в ней находился и подарок для сына электронный питомец Furby. Покупка его была, в общем то импульсной. Игрушка значилась в бестселлерах новогоднего сезона и стоила относительно недорого. В сортах Furby я не разбирался, но когдато давно чтото. Так вот Furby тоже надо кормить. Делать это можно как просто пальцем нажимая ей на язык, так и с помощью iPhone и устройств на. В сортах Furby я не разбирался, но когда то давно что то позитивное об игрушке слышал. Сынишку, в силу его годовалого возраста, подарок не сильно впечатлил, а позволять бросать сложное электронное устройство на пол и отрывать этому устройству уши мне было жалко, и все шло к тому, чтобы убрать подарок на полку до лучших времен, однако мой взгляд пал на одну надпись на красочной упаковке. Надпись гласила, что для данной игрушки в App. Store можно скачать приложение, с помощью которого киберпитомца можно кормить, подавать ему всякие команды, а также переводить фразы, которые он произносил на своем языке фурбише Furbish, на английский. Приложение было скачано, питомец покормлен всякими съедобными и несъедобными объектами, которые он либо с аппетитом проглатывал, либо выплевывал, а переводчик с фурбиша на английский работал на удивление точно. Неужели распознавание аудио работает в наше время так надежно и даже в довольно шумной обстановке Что то тут не так. И как приложение передает команды Furby ИК отпадает ранние версии Furby, как выяснилось, имели ИК порт для общения между собой, Bluetooth тоже. Остается только аудио. Можно Русифицировать Англоговорящего Furby' title='Можно Русифицировать Англоговорящего Furby' />Это интересно Среди прочей требухи там нашлось несколько десятков коротких WAV файлов, пронумерованных особым образом. Все это очень смахивало на готовые аудиокоманды. Первый файл начинался с номера 3. После воспроизведения этого файла в Audacity Furby чего то деловито пожевал и выдал радостное Mmm, yum. Значит потенциально Furby умеет воспринимать гораздо большее число команд, чем есть на руках этих готовых WAV файлов. Надо искать дальше. Внешний вид сигнала в Audacity наводил на мысль, что используется какая то частотная модуляция, причем шел один сигнал, дальше небольшая пауза, затем визуально такой же сигнал снова. Общая продолжительность полторы секунды. Раз модуляция частотная, то неплохо бы взглянуть на спектр. Посмотрел график на нем отчетливо выделялось пять пиков на одинаковых расстояниях друг от друга в районе 1. КГц Башня из Мордора это, конечно, красиво, но как это расшифровать Покопался в Audacity еще немного и отрыл режим отображения аудио в виде спектрограммы. Вот эта картинка уже была гораздо красивее первой Здесь отчетливо видны две посылки с паузой посередине, отличающиеся друг от друга порядком следования нот базовых частот. Причем средняя частота является несущей, постоянно чередуясь с другими четырьмя нотами. Для удобства декодирования последовательности сделал в графическом редакторе маску, которую наложил поверх скриншота спектрограммы, присвоил каждой ноте последовательно числа от 0 до 3 и начал анализировать последовательно идущие команды как мы помним, разработчики i. OS приложения услужливо пронумеровали нам все WAV файлы. Поначалу оказалось, что в соседних командах числа иногда прыгают, т. После некоторого анализа стало понятно, что ноты надо нумеровать так, как на рисунке ниже Здесь посылка расшифровывается как 3. Дальнейший анализ команд, перевод их бинарную форму и побитовое сравнение выявило следующую структуру посылки и команды в целом Первый байт в примере это 3. Второй байт 3. 01. Третий и заключительный байт посылки всегда равен 1. Что это значит Во первых, команда разбивается на два пакета по 5 бит данных в каждом. В сумме мы получаем 1. Однако метод вычисления контрольной суммы вычислить не удалось. Проанализировав номера команд получилось, что я могу на основе имеющихся WAV файлов найти 7 из 3. В сумме это давало 2. WAV файлов, что тоже неплохо. Написал скрипт, который генерировал по нужному номеру команды WAV файл, подобный готовому, и начал перебирать доступные мне диапазоны команд. Как оказалось, недокументированные команды действительно были Furby реагировал на них разным образом, пел песенки, читал рэп, чихал, имитировал сон и делал прочие незамысловатые вещи. Это подстегнуло исследовательский аппетит, однако алгоритм вычисления контрольной суммы реверс инжинирингу упорно не поддавался, а значит большая часть команд оставалась для меня недоступной. В очередной раз прочесывая Интернет на предмет каких нибудь зацепок я вдруг обнаружил ссылку на официальное приложение Furby для Android про которое на коробке с игрушкой не было ни слова. Никогда еще Штирлиц не был так близок к разгадке. Раз WAV файлов нет, то приложение как то генерит команды на лету Это то, что мне нужноДекомпиляция и просмотр Java кода дал несколько интересных зацепок, но как оказалось, вся интересная начинка, а именно генерация и анализ аудио, находится внутри нативной. Пораскинув мозгами, Штирлиц решил качать Android SDK. В итоге был собран маленький проект, в который включена сама нативная библиотека и минимальная обвязка, предоставляющая доступ к одной только нужной мне функции. Само же приложение при старте просто создавало WAV файлы для минимально необходимого мне набора WAV файлов, где в командах были те самые недостающие старшие и младшие 5 бит, для которых мне были нужны контрольные суммы. После некоторого курения Stack Overflow опыта написания приложений под Android у меня на тот момент не было приложение запустилось и сгенерировало мне на виртуальной SD карте эмулятора набор нужных мне WAV файлов, которые я перетащил через adb pull в нормальную файловую систему. Анализ этих файлов дал мне полное покрытие все 6. В ходе анализа реакций Furby на команды был найден еще один диапазон команд, на который Furby так или иначе реагировал. Однако каких то атомарных команд типа открой глаза, закрой глаза, пошевели ушами обнаружено не было. Равно как и не была найдено команд самоуничтожения или зачитывания EULA на фурбише это не значит, что каких то специализированы команд нет, просто они могут активироваться, например, особой последовательностью или вообще другим набором кодов но это как то выяснить вряд ли возможно. Однако я решил пойти дальше и написать анализатор ответов Furby, так как некоторые команды, хотя и не дают видимого результата, могут вызывать реакцию Furby в виде ответных команд, что тоже интересно. В итоге был написан Perl скрипт, анализирующий поток PCM данных с микрофона, делающий на лету и расшифровывающий эти посылки. Писалось все это под Windows, где для Perl, к сожалению, нету нормальных способов записи данных с микрофона, поэтому пришлось сделать консольную программу на Delphi, которая читает с микрофона данные и выводит их непрерывно в STDOUT. Поток данных перенаправляется в скрипт, где уже происходит анализ. Такой вот Unix way для Windows. Стоп, стоп, стоп, скажет утомленный читатель, А для чего все это нужноМне было интересно посмотреть, что у него внутри, не ломая игрушку физически все таки покупал не себе. Попутно получил знания о генерации и анализе звука в Perl, о FFT, оконных функциях, о работе с Android, что само по себе увлекательно. Возможно кому то данная статья пригодится при реализации собственного протокола, есть ведь всякие интересные примочки для i. Phone, передающие данные как раз через аудиоразъем. Ну и, наконец, возможность управлять Furby через компьютер потенциально открывает эмоциональный метод нотификации о каких то событиях. Например, при приходе почты от определенного адресата можно попросить Furby что то станцевать, по приходу коммита в Git от определенного человека помурлыкать, а от другого издать звук менее приличный коих у Furby есть в запасе. Правда для этого все же нужно решить уже парочку задач хардверных. Во первых, запретить Furby засыпать через 1. USB. Может быть на Хабре есть знатоки железа, которые захотят окончательно укротить зверькаFurby умная игрушка. Русифицированный вариант 2. Несколько недель назад мы купили дочери игрушку. Но не просто плюшевую зверюшку, а вполне такую себе интеллектуальную игрушку, которая еще и выглядит довольно мило. Знакомьтесь Furby. Он умеет петь, танцевать и учится разговаривать на вашем языке. Высокий голосок. Глазки с ресничками. Вроде, девочка. В русской транскрипции название игрушки звучит, как Фрби. Говорит она хоть и много, но непонятно ее родной язык Furbish. Дальнейшее развитие игрушки зависит от того, как вы будете с ней общаться. Немного про то, что можно и нужно делать с игрушкой. Во первых, конечно, говорить. Во вторых, гладить и чесать Furby это очень любит и воспринимает как награду за какие то свои действия. Например, за разговор на русском. Так же игрушку можно трясти, качать и переворачивать на это она реагирует по разному зависит от воспитания, но реакция есть всегда. Дерганье за хвост Furby воспринимает как игру так что тоже можно попробовать. Глаза у игрушки это два маленьких ЖК монитора, с помощью которых Furby может показать широкий спектр эмоций. В процессе общения Furby начнет говорить слово за словом на вашем языке полное обучение занимает 1. Furbish. Разговоры это не все, что умеет Furby. Если включить музыку, то игрушка начнет танцевать, причем делает она это попадая в ритм Так вот Furby тоже надо кормить. Делать это можно как просто пальцем нажимая ей на язык, так и с помощью i. Phone и устройств на Android для этого есть бесплатное приложение. В приложении есть разные игры для Furby и набор еды. В зависимости от характера ему будет нравится разная еда. Приложение имеет в своем составе переводчик с Furbish на Русский. Главный совет тут держите устройство поближе к игрушке, чтобы они слышали друг друга коммуникация идет именно еле слышным звуком попискиванием. Кстати, это касается не только приложения переводчика, но и кормления. Марина так же устройство имеет объемный словарь фербского языка. Я ниасилила. Очень много слов. А еще Фрби можно научить тем словам, которых в его программе нет. Надо только часто повторять. Характеры Furby. Каждый Furby после некоторого времени приобретает свой уникальный характер, который зависит от того, что вы с ним делаете, чем кормите, какую музыку он слушает. У нас получилось сделать 3 разных характера. Марина Первый характер у игрушки был, когда мы его пару дней тестировали до подарки дочери. Второй ее воспитание. Третий неудачная попытка перевоспитания при возвращении к первому характеру. Назовем темпераменты условно 1. Кстати, говорил наиболее осмысленно и больше всех. Этот товарищ ел красный перец и только посмеивался. Получился от раскачивания игрушки тоже долгое время. Потом снова вернули девочку закормили мороженным и загладили D. Как сменить характера Furby. Как видно из вышенаписанного делайте, что то с Furby много и он скорее всего сменит характер. Составить Сказочную Историю О Дикорастущем Или Культурном Растении тут. Марина Пара минут покачивания, кормления или каких то других действий нон стоп и Фрби со словами Я меняяяюсь часто заморгает и на самом деле изменит характер. На коробке нарисовано как минимум 6 разных характеров, как я понимаю, это основные направления, но у вас все равно получится свой собственный. Если Furby долго не трогать и не разговаривать с ним, он со словами Моя спаааать, соберется спать и немного похрапев заснет. Марина Ферби приглянулся не только нашей дочке, но и кошке. Животное было уверено, что это ее непонятно откуда взявшийся котенок. Вылизывала его, прятала в укромных местах, куда не попадает свет. Наверное бы и кормить пыталась, но он не просил. И небольшое видео про Furby Понравилась статья Будет много интересного Подпишитесь на обновления Поделиться в соц. Facebook. Мой мир. Вконтакте. Одноклассники. Live. Journal. Яндекс.