пятница, 7 апреля 2023 г.

Эксперименты с bluetooth лампой

Называть это очередным "взломом" уже наверное будет перебором, хотя по сути оно и есть) Не так давно увидел на хабре интересную статью как один чувак взломал протокол лампы https://habr.com/ru/articles/722412/ и статья была настолько хорошая и понятная, что мне захотелось провернуть то же самое. Мне было просто интересно попробовать это самому, потому как в свое время я пытался что-то похожее провернуть с приложение для самоката - оно ужасно тормозило и мне было интересно ставить на блокировку и снимать с нее, без захода в приложение. Если бы была такая же инструкция как у него, то я бы может чего и добился в тот раз, но тогда все ограничилось некоторыми экспериментами с андроид приложениями nRF Logger и nRF Connect что было полезно но безрезультатно. Впрочем эти приложения и с блютуз лампой оказались бесполезны. Собственно тот способ что был описан в статье на хабре реально рабочий, я это проверил и хотел бы написать о некоторых нюансах с которыми столкнулся. И еще хотел бы ответить что лампа такая хоть и прикольная, но больше подходит для такого рода экспериментов, потому как более умная лампа с вайфаем мне обошлась гораздо дешевле (600 рублей против более 1000 для блютуз), а она еще и с алисой может работать. В итоге купил лампу за 1000 рублей просто чтобы проверить инструкцию))

Перво-наперво для меня стало открытием что через режим разработчика можно получить дамп общения по блютузу, который потом "легко" достается из памяти и анализируется через wireshark

Для начала необходимо включить режим разработчика на устройстве - обычно это делается путём 9 нажатий на номер сборки в сведениях об ОС. Далее переходим в настройки режима разработчика, активируем пункты "включить журнал HCI Bluetooth" и "Отладка по USB" и перезапускаем bluetooth.

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

adb pull /storage/emulated/0/mtklog/btlog/btsnoop_hci.log

Далее открыл вайршарк и скормил ему этот файл, там среди кучи мусора нашел команды посылки команд на устройство:


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

7e070503ff000000ef

Поэтому уже в Убунту (кстати не пришлось ничего устанавливать, там gatt-tool уже стоял по умолчанию) легко менять цвета лампы, например установить синий цвет:

gatttool –I
connect BE:FF:90:09:4A:48

char-write-cmd 0x0008 7e0705030000ff00ef

или отключить совсем:

char-write-cmd 0x0008 7e0404000000ff00ef

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

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

Отправить комментарий