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 сделаете?
А в девайсе зашиты персональные ключи, которые простым смертным недоступны, они в спец партиции флешки.
А ещё теперь Сяо внедряет аппаратную защиту от смена региона.
Ковырять прошивку и протокол блютуза имеет смысл только если хочешь написать свой клиент под часы. Для простого вытягивания сырых метрик в базу облачное API работает стабильнее
Статья отличная, но качество данных, собираемых самими часами оставляет желать лучшего. Мне они например показывают, что я спал аж 9 часов, по факту я разбитый проснулся, потому что ребенок 9-месячный будил как минимум 4 раза за ночь, которые я запомнил, потому что полностью проснулся. Один из этих разов я не мог уснуть и с 4 утра до 6 примерно тупил в телефон, потом уснул где-то на полтора часа до будильника. Часы ничего не зафиксировали - спит!
именно Xiaomi Smart Band 10 ? Жалобы на он во время тупления в телевизор нередко можно слышать, но у недосыпа могут быть и более глубокие причины.
Один типа ученый в ютубе анализирует часы именно по этому параметру, сравнивает с фазами сна полученных на ЭКГ (самодельном). Довольно большой разброс у разных производителей.
А как этого "типа ученого" найти?
Rob ter Horst (a.k.a. “The Quantified Scientist“) b10 он обозревал но там еще интереснее сравнительные графики
Для точного трекинга нужны датчики активности мозга и движения глаз, а не зеленый светодиод на запястье)
В этом плане мне очень нравятся Хуавей - хорошо и довольно точно отслеживают сон. Правда, хорошего в этом мало, т.к. сон мой редко хороший и приложение мне об этом прямо говорит 😁
А можно не мучать кота, а
Выгружать curl с самих часов
Настроить синхронизацию Google fit, Strava и брать открытые данные с них.
Выгружать JSON себе на сервер, а не на Сяоми, и не зависеть от сервисов Сяо.
спасибо, очень интересный материал. А не знает ли кто, есть ли возможность выгрузить архив показаний из Zepp Lite - жена потеряла 7й бэнд, купила 10й на замену, и оказалось, что 1) к Zepp он не коннектится? только Mi Fitness 2) архив из Zepp в Mi fittness нельзя перенести, из-за разных регионов. Вообще, региональная тюрьма у Xiami это конечно боль
Формат хранения данных сна внутри FDS-объектов целиком контролируется Xiaomi. При крупном обновлении прошивки браслета или самого приложения Mi Fitness структура байтов может измениться, что потребует корректировки парсера.
В целом верно, однако даже Сяоми не может одновременно поменять и прошивку в миллионе устройств по всему миру и на своих серверах. На практике это значит, что старые форматы будут доступны какое-то время после выкатывания новых. Возможно, вплоть до вывода из эксплуатации старых устройств.
Текст с запахом ИИ
А что, через стандартное API Health Connect они ничего не отдают?
Реверсить бинарные блобы без внятной документации та еще медитация) Когда после недели ковыряния в хекс-редакторе понимаешь, что таймзона хранится в пятнадцатиминутных отрезках, хочется просто выйти в окно
Возможно подобное для HUAWEI Band?
Хорошая статья, подробный обзор.
Можно было ещё больше упростить себе жизнь, посмотрев готовую реализацию Xiaomi протокола. По тематике smart home проектов десятки, если не сотни. По тематике fitness проектов прилично меньше, но шифрование там аналогичное
https://github.com/AlexxIT/SmartScaleConnect
Gadgetbridge вроде этот браслет поддерживает https://gadgetbridge.org/basics/topics/xiaomi-protobuf/?h=xi#xiaomi-protobuf-watches
Как исследовательский проект описанное в статье - очень круто. Но существует же давным давно Notify for MiBand.
При помощи него и Tasker я уже много лет (когда там mi band 3 вышли) я собираю метрики.
И локально в kwgt рендерятся. И в Прометей летят. А там уже хоть в графану, хоть в телегу.
Реверс-инжиниринг Xiaomi Smart Band 10