Обратный инжиниринг Bluetooth LE - устройство отправляет странные ответы обратно - PullRequest
0 голосов
/ 25 марта 2019

Недавно я приобрел электрический скутер Segway Ninebot ES2. Я могу подключиться к самокату через Bluetooth LE и получить информацию, такую ​​как состояние батареи, текущий пробег, температура и так далее. Все это делается через приложение .

На моем устройстве Android я успешно удалил файл журнала HCI, который импортировал в Wireshark. Я вижу все запросы и команды, отправляемые назад и вперед между моим телефоном и скутером. Тем не менее, запросы и ответы являются мусором, и я не знаю, как их интерпретировать.

Пример отправленной команды (информация говорит Sent Write Command, Handle: 0x000e (Nordic UART Service: Nordic UART Tx))

sent command

Пример полученного значения, которое я получил сразу после (информация говорит Rcvd Handle Value Notification, Handle: 0x000b (Nordic UART Service: Nordic UART Rx))

received

Как я должен интерпретировать эти ответы? Если бы уровень заряда батареи был 59%, я бы ожидал, что он вернет что-то вроде 0x3b (шестнадцатеричный 0x3b равен 59 десятичных). Но, честно говоря, я понятия не имею, как это работает. Может быть, они возвращают кучу данных в типе данных, только их приложение знает, как интерпретировать? Как JSON для веб-сайтов.

Вот пример из приложения nRF Connect for Mobile , где я нажимаю стрелку вниз по всем характеристикам: https://i.imgur.com/hREDomP.jpg (большое изображение)

И, возможно, более важно: как мне повторить запрос или команду в nRF Connect? Я попытался отправить байтовый массив, который выглядит как 0x {02410011000d.....} (из команды записи) в приложении, но я не знаю, как прочитать ответ.

...