Как команда школьников на хакатоне НАСА выполнила реверс-инжиниринг фитнес-браслета для управления беспилотником

17:30  18 мая  2016
17:30  18 мая  2016 Источник:   HabraHabr


Год назад я приобрел фитнес-трекер SONY SmartBand SWR10. Как и большинство других фитнес-трекеров, гаджет не играл большой роли в моей жизни, его основным занятием было лежать на моем столе. Тем не менее, это интересное электронное устройство, и когда друг пригласил меня присоединиться к его команде в хакатоне NASA Space Apps — я решил использовать трекер. Мы выбрали секцию «Не разбей мой дрон», где требовалось создать решение для управления беспилотником. Было решено использовать этот трекер для управления дроном.

Смотрите также: Стоимость и внешний вид Xiaomi Mi Band 2 стали известны ещё до анонса

Стоимость и внешний вид Xiaomi Mi Band 2 стали известны ещё до анонса В прошлом году, когда от Xiaomi ждали новое поколение фитнес-браслета, компания показала обновлённый Mi Band 1S с пульсометром. По всей видимости, в этот раз китайский производитель всё-таки представит Mi Band 2. Это подтвердили недавние фото устройства на руке главы Xiaomi Лэя Цзюня, а теперь в сеть попали новые изображения и даже точная дата релиза аксессуара. На фотографии видно, что форма устройства останется неизменной по сравнению с прошлым поколением браслета. "Капсула" по-прежнему останется съёмной, что позволит экспериментировать с цветами ремешков.



Как только хакатон начался, я стал искать API своего браслета или инструменты для разработчиков, но ничего не нашлось. Некоторые пользователи форума сообщили, что у SONY есть проприетарный SDK, который дается разработчикам, решивших сотрудничать с компанией, но по условиям хакатона можно было использовать только open-source решения. Поэтому я решил, что пришло время создать собственный интерфейс по управлению дроном. Я запустил приложение для трекера, и включил функцию “Bluetooth HCI snoop log”. Эта функция позволила сниффать трафик и сохранять дамп на SD-карту.

Я нашел лог:
~ adb shell echo $EXTERNAL_STORAGE
/sdcard
~ adb pull /sdcard/btsnoop_hci.log


И открыл его в WireShark:



Похоже, что передача данных велась по протоколу Bluetooth Low Energy, а если точнее, то по протоколу GATT. Это двухсторонняя передача данных, где телефон выступает в роли сервера, «GATT Server», а периферийные устройства получают “GATT characteristics”, которые могут содержать любые двоичные данные.

Я выбрал первый UUID (00000208–37cb-11e3–8682–0002a5d5c51b), и поискал его в Google. Я ожидал обнаружить обычный стандартизированный GATT сервис, но нашел что-то более интересное.

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



И хотя информация по наклонам была верной, значения не отображались. После изучения кода функции оказалось, что в 32-битном числе одинарной точности содержалось три 10-битных значения. Это имеет смысл, поскольку большинство акселерометров работает с 10-битной точностью (как и большинство АЦП, аналогово-цифровых преобразователей). Вот исходные данные, обратите внимание на первых два бита:

acc data: 0b00101110 0b10110101 0b10111100 0b10111000
acc data: 0b00111010 0b11110001 0b00011101 0b11101011
acc data: 0b00111110 0b01110110 0b10100110 0b10011001
acc data: 0b00001011 0b11011101 0b10111101 0b00111001


Но парсинг данных как трех 10-битных значений был довольно странным, каждые несколько градусов наклона меняли значение с 511 до -512, и смещение этого не меняло (причем проблемы целочисленного переполнения здесь не было). Поэтому я решил, что SONY может использовать какой-то собственный метод бинарной упаковки, или же компания использует арифметическое кодирование и сжатие.

Я опробовал Protobuf, MsgPack, Thrift и несколько парсеров, но ничего не сработало. У меня был всего день для подключения своего устройства к Wi-Fi дрона. Уже отчаявшись, я попробовал DEX-декомпиляцию приложения компании, и через полчаса получилось вот что:

// Roughly
1: iconst_0 512 iconst_1 1023
2: r1 xor iconst_0
3: istore_0
4: iload_0
5: ifneq 8
6: r1 xor iconst_1
7: istore_0


if ((data & 0x200) != 0) {
data = -((data ^ 1023) + 1);
}
return (((float) (-data)) * 15.625f) / GRAVITY_FACTOR;


Первая половина [0, 512] была инвертирована, поэтому и возникла ситуация, описанная выше. Я исправил это, использовав обычный XOR, и все получилось. Я добавил фактор гравитации, с результатом [-1,1] для ±1 г, и все, что нужно было сделать дальше — использовать данные акселерометра для управления дроном.

—   Поделится Новостью в Соц. Сетях

смотрите также:

Стоимость и внешний вид Xiaomi Mi Band 2 стали известны ещё до анонса

В прошлом году, когда от Xiaomi ждали новое поколение фитнес-браслета, компания показала обновлённый Mi Band 1S с пульсометром. По всей видимости, в этот раз китайский производитель всё-таки представит Mi Band 2. Это подтвердили недавние фото устройства на руке главы Xiaomi Лэя Цзюня, а теперь в сеть попали новые изображения и даже точная дата релиза аксессуара. На фотографии видно, что форма устройства останется неизменной по сравнению с прошлым поколением браслета. "Капсула" по-прежнему останется съёмной, что позволит экспериментировать с цветами ремешков.

Фитнес-браслет Honor Band A1 поступит в продажу по цене $15

Бренд Honor представил фитнес-браслет Band A1. Аксессуар выйдет в двух вариациях: с резиновым и кожаным ремешком, при этом материал ремешка - это единственное отличие двух версий браслета. Honor Band A1 можно подключить к мобильному устройству на базе Android с помощью технологии Bluetooth 4.2. Браслет обладает световым индикатором звонков и сообщений, а также предупреждает о новых уведомлениях вибрацией.   Honor Band A1 имеет защиту от пыли и воды. Аккумулятор ёмкостью 70 мАч, по словам производителя, способен проработать без подзарядки до 28 дней.

Пользователи Polar A360 жалуются на аллергические реакции

Два года назад в Fitbit начали поступать массовые жалобы от пользователей, у которых смарт-браслеты вызвали раздражение кожи. На это компания заявила, что дело не в продукции Fitbit, а в том, как именно и как долго её носят пользователи. Теперь такие же проблемы начали испытывать владельцы фитнес-трекеров Polar. Согласно информации от Wearable, компания Polar начала рассылку писем с предупреждениями о том, что "умный" браслет A360 может вызывать аллергическую реакцию. На данный момент проблема не является широко распространённой, но некоторые жалобы от пользователей уже поступали.

Xiaomi Mi Band 2 выпустят на месяц позже ожидаемого

В прошлом месяце глава компании Xiaomi Лэй Цзюнь сообщил, что на презентации 10 мая они намерены представить фитнес-трекер Mi Band второго поколения и 6,44-дюймовый смартпэд Max. До последнего ожидалось, что оба устройства анонсируют на предстоящем мероприятии. Кроме того, появилась информация, согласно которой браслет будет стоить $16. Сегодня же стало известно, что выпуск Mi Band 2 откладывается из-за непредвиденных производственных проблем.

Microsoft Band 2 научился управлять плейлистом

Сегодня компания Microsoft выпустила программное обновление для фитнес-браслета Microsoft Band 2. По многочисленным заявкам пользователей Microsoft добавила в "умный" браслет возможность управления музыкой без необходимости брать в руки смартфон. Кроме того, обновление коснулось алгоритмов упражнений Exercise Tile и улучшило проактивную систему оповещений Activity Reminders. Microsoft подробно прокомментировала все нововведения, которые получил Band 2.  Отложите свой телефон и управляйте музыкой прямо с браслета Microsoft Band 2.

Фитнес-трекеры Garmin совместимы не со всеми Windows-смартфонами

Компания Garmin недавно выпустила официальное универсальное приложение Garmin Connect Mobile для синхронизации собственных носимых девайсов с устройствами платформе Windows 10. Однако сегодня стало известно, что далеко не все фитнес-устройства компании полностью совместимы со смартфонами на Windows. Например, некоторые аксессуары не поддерживают смарт-уведомления, а на других может не работать возможность управления музыкой. В связи с этим компания опубликовала список совместимых с треккером Garmin устройств.

Фитнес-трекер Withings Go сможет проработать 8 месяцев без подзарядки

В последнее время спортивные браслеты и фитнес-трекеры пользуются необычайной популярностью. Швейцарская компания Withings, известная своими классическими часами со смарт-функциями, представила на выставке CES 2016 в Лас-Вегасе миниатюрный фитнес-трекер Withings Go. Благодаря специальной клипсе его можно закрепить на сумке, рубашке или поясе. В отличие от конкурентов в лице Jawbone UP MOVE и Misfit Flash, в Withings Go есть круглый дисплей, выполненный по технологии E-Ink и отображающий время или прогресс по пройденному расстоянию, сожжённым калориям или количеству шагов.

Фитнес-трекер Garmin vivosmart HR+ использует GPS для сбора точных результатов тренировок

Garmin анонсировала фитнес-трекер с функциональностью "умных" часов vivosmart HR+. Устройство поддерживает оповещения о входящих звонках, новых сообщениях на почте и в социальных сетях, виджеты погоды и управления плейлистом. Новинка умеет измерять скорость, темп и преодолённое расстояние, определяя местоположение по GPS и позволяя выводить более точные результаты во время занятий на открытом воздухе. При тренировках в зале фитнес-трекер получает информацию со встроенных датчиков: акселерометра и оптического пульсометра Garmin Elevate.

Cubot V2 с динамическим пульсометром проработает до 7 дней от одного заряда

Не прошло и полугода с момента анонса первого поколения фитнес-браслета Cubot V1, а компания тем временем анонсировала второе поколение "умного" аксессуара. Девайс логично назвали Cubot V2 и оснастили рядом полезных функций, главная из которых - возможность динамического измерения пульса в течение суток с графическим отображением на смартфоне и оповещением при превышении заданной отметки. Внутри браслета установлен энергоэффективный чип Bluetooth 4.0 nRF51822 и аккумулятор на 80 мАч.

Комментарии:

comments powered by HyperComments