Pull to refresh

Comments 34

Очень сильный разбор. Особенно понравилось, что статья не скатилась в "смотрите, я расшифровал RC4", а показывает весь практический путь: от MITM и APK patching до восстановления бинарного формата FDS. Такие материалы редкость - обчно либо поверхностный тутор либо дамп кода без объяснения мышления.

Отдельно кайфанул с момента про timezone в 15-минутных интервалах и 404 из-за неправильного suffix это прям классический reverse engineering experience, когда полдня подозреваешь auth/security, а проблема оказывается в одном байте формата :)

Ну и вообще круто, что итогом стал не PoC "на один вечер", а полноценный self-hosted pipeline с SQLite и Telegram-ботом. Спасибо за публикацию.

Хорошо хоть не в лунных циклах время измеряют, а то от азиатских вендоров можно ожидать абсолютно любой дичи в протоколах)

Достойный материал, побольше бы такого на Хабре

xioami а точнее huami особенно полюбила все шифровать после того как по ее браслетам прошлись хакеры с солонкой. у них и поверх bluetooth свое собственное шифрование с ключем в учетке.

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

Huami тут не причем, и она давно с Сяоми не работает

С ключами, там приватный ключ у Сяоми, как вы handshake сделаете?

А в девайсе зашиты персональные ключи, которые простым смертным недоступны, они в спец партиции флешки.

А ещё теперь Сяо внедряет аппаратную защиту от смена региона.

так история началась с miband которые huami делала . была история в нескольких эпизодах: выкрываем miband 2, усилили шифрование, вскрываем miband3 etc. Дальше я уже смотрел на Amazfit/huami/zepp os они там продолжили наворачивать

Ковырять прошивку и протокол блютуза имеет смысл только если хочешь написать свой клиент под часы. Для простого вытягивания сырых метрик в базу облачное API работает стабильнее

ну я то кстати я для этого и копал. но тут у нас регулярно встречаются вендеронезависимые которым через китайские облака - моветон. Ощущения типа не те :)

Статья отличная, но качество данных, собираемых самими часами оставляет желать лучшего. Мне они например показывают, что я спал аж 9 часов, по факту я разбитый проснулся, потому что ребенок 9-месячный будил как минимум 4 раза за ночь, которые я запомнил, потому что полностью проснулся. Один из этих разов я не мог уснуть и с 4 утра до 6 примерно тупил в телефон, потом уснул где-то на полтора часа до будильника. Часы ничего не зафиксировали - спит!

именно Xiaomi Smart Band 10 ? Жалобы на он во время тупления в телевизор нередко можно слышать, но у недосыпа могут быть и более глубокие причины.

Один типа ученый в ютубе анализирует часы именно по этому параметру, сравнивает с фазами сна полученных на ЭКГ (самодельном). Довольно большой разброс у разных производителей.

А как этого "типа ученого" найти?

Для точного трекинга нужны датчики активности мозга и движения глаз, а не зеленый светодиод на запястье)

В этом плане мне очень нравятся Хуавей - хорошо и довольно точно отслеживают сон. Правда, хорошего в этом мало, т.к. сон мой редко хороший и приложение мне об этом прямо говорит 😁

Поддерживаю. Тоже перешёл на Huawei, потому что они хоть как-то сон меряют. Xiaomi довольно уныло в этом плане, по крайней мере было.

А можно не мучать кота, а

  1. Выгружать curl с самих часов

  2. Настроить синхронизацию Google fit, Strava и брать открытые данные с них.

  3. Выгружать JSON себе на сервер, а не на Сяоми, и не зависеть от сервисов Сяо.

  1. Выгружать curl с самих часов

каааак?

Может, Gadgetbridge умеет?

Lua в часах и встроенный curl, лол, все просто как 2 пальца

2 - Mi Fitness при синхронизации с Apple Health и Strava передает не все данные, как понимаю

По получению даннных напрямую с трекера ещё планируется разбор

спасибо, очень интересный материал. А не знает ли кто, есть ли возможность выгрузить архив показаний из Zepp Lite - жена потеряла 7й бэнд, купила 10й на замену, и оказалось, что 1) к Zepp он не коннектится? только Mi Fitness 2) архив из Zepp в Mi fittness нельзя перенести, из-за разных регионов. Вообще, региональная тюрьма у Xiami это конечно боль

по факту там другой изготовитель и протокол. а не регионы. gadgetbreadge вроде позволяет выгрузить из часов. но не учетки.

Формат хранения данных сна внутри FDS-объектов целиком контролируется Xiaomi. При крупном обновлении прошивки браслета или самого приложения Mi Fitness структура байтов может измениться, что потребует корректировки парсера.

В целом верно, однако даже Сяоми не может одновременно поменять и прошивку в миллионе устройств по всему миру и на своих серверах. На практике это значит, что старые форматы будут доступны какое-то время после выкатывания новых. Возможно, вплоть до вывода из эксплуатации старых устройств.

Что страшнее — и «топовый» комментарий тоже воняет..

А что, через стандартное API Health Connect они ничего не отдают?

Реверсить бинарные блобы без внятной документации та еще медитация) Когда после недели ковыряния в хекс-редакторе понимаешь, что таймзона хранится в пятнадцатиминутных отрезках, хочется просто выйти в окно

между прочим этот момент тоже раскопали, более того это есть в стандарте bt

Протокол bt в protobuf весь задокументирован, места просто нужно знать

Возможно подобное для HUAWEI Band?

Возможно .. скорее всего да. Вопрос скорее кто будет в этом разбираться

Хорошая статья, подробный обзор.

Можно было ещё больше упростить себе жизнь, посмотрев готовую реализацию Xiaomi протокола. По тематике smart home проектов десятки, если не сотни. По тематике fitness проектов прилично меньше, но шифрование там аналогичное
https://github.com/AlexxIT/SmartScaleConnect

Как исследовательский проект описанное в статье - очень круто. Но существует же давным давно Notify for MiBand.

При помощи него и Tasker я уже много лет (когда там mi band 3 вышли) я собираю метрики.

И локально в kwgt рендерятся. И в Прометей летят. А там уже хоть в графану, хоть в телегу.

Sign up to leave a comment.

Articles