Вайб-хакинг Wi‑Fi-камеры с помощью Claude
Как-то раз я решил установить на своем участке видеонаблюдение. В поисках подходящего устройства зашел на известную китайскую торговую площадку и обнаружил вот такую камеру.
Камера стоит примерно 800 рублей, оснащена удобным магнитным креплением, встроенным аккумулятором и может питаться от USB. При желании такими устройствами можно обвешать весь периметр и следить за происходящим снаружи, не привлекая внимания санитаров. Проблема лишь в том, что камера работает исключительно через китайское приложение и требует регистрации на китайском сервере. Моего внутреннего параноика это не обрадовало, да и интерфейс штатного приложения оказался на редкость некрасивым и неудобным. Недолго думая, я разобрал камеру, чтобы выяснить, можно ли ее взломать.

Внутри нашелся чип BK7252N — 32-битный микроконтроллер ARM с частотой 160 МГц, 544 КБ памяти, встроенным Wi-Fi и параллельным интерфейсом для подключения камеры. Сенсор оказался довольно скромным: GalaxyCore GC0329 на 0,3 мегапикселя с разрешением 648×488. А ведь на сайте, между прочим, красовалась гордая надпись HD. Впрочем, для моих задач и этого достаточно.
На плате также нашлись контактные площадки с маркировкой RX и TX. Подключив к ним USB-UART-адаптер, я получил доступ к консоли операционной системы RT-Thread. Эта ОС довольно популярна, поддерживает множество контроллеров разных архитектур, и на SE7ENе ей даже посвящена статья. К сожалению, SDK для чипов Beken, к которым относится и BK7252N, в открытом доступе нет. На форумах он упоминается, но найти его в сети мне так и не удалось, поэтому пришлось искать другие пути. На GitHub обнаружился проект OpenBeken, участники которого разрабатывают открытую прошивку на базе FreeRTOS для похожих камер. Однако мой чип и сенсор там не поддерживались.
На этом этапе в дело вступил Claude. Я предоставил ему доступ к папке проекта с загруженными исходниками OpenBeken и поставил задачу запустить камеру. Сначала он нашел инструмент для загрузки через UART и скачал оригинальную прошивку. Затем собрал OpenBeken для похожего чипа BK7231N и прошил плату. Чтение логов через UART показало, что контроллер в целом запускается, но при инициализации сенсора возникают проблемы. У BK7231N отличаются адреса регистров, отвечающих за тактирование параллельного порта камеры. Claude извлек нужные адреса из оригинальной прошивки. Тактирование заработало, однако изображение по-прежнему не появлялось. Чтобы сенсор начал передавать картинку, его необходимо инициализировать: записать правильные значения в 259 управляющих регистров. Эти значения также нашлись в оригинальной прошивке. После этого камера наконец заработала как следует.

Во время экспериментов камеру приходилось перезагружать после каждой прошивки. В какой-то момент мне это надоело: я достал из ящика Arduino и модуль реле и набросал простой скетч, который принимает команды по USB и управляет реле. Питание камеры я подключил через него, после чего мне оставалось только общаться с Claude: он сам перезапускал питание и загружал очередную версию прошивки. За несколько часов экспериментов появился патч для OpenBeken с поддержкой моей камеры, а также функция обнаружения движения: когда в кадре что-то движется, камера сохраняет снимок на SD-карту. Устройство создает собственную точку доступа без пароля. После подключения к ней нужно открыть в браузере адрес 192.168.4.1 и в веб-интерфейсе, в разделе Config → Configure WiFi, указать имя и пароль домашней сети Wi-Fi. Затем камеру можно найти в локальной сети по адресу вида http://name.local, где name задается в веб-интерфейсе.
Результаты работы я выложил на GitHub вместе с инструкцией по сборке прошивки и ее загрузке в камеру. В дальнейшем планирую также создать приложения для Android и iOS. Проект обходится без сторонних сервисов и облаков: все работает в локальной сети, без регистрации и СМС. Это был мой первый опыт аппаратного хакинга с помощью ИИ, и результат меня впечатлил. У меня осталось еще несколько железок, ожидающих своей очереди, так что продолжение следует.
В США приостановили вылеты из аэропортов по всей стране из-за чрезвычайной ситуации и угроз безопасности
Nvidia сама формировала спрос на видеокарты? После отставки Дженсена Хуанга раскрылась неудобная правда о дефиците ускорителей
Оператор раскрыл характеристики Honor 700 Pro, Honor 700 и Honor 700S: 9000 мА·ч, 80 Вт и 200 Мп
SpaceX получила лицензию на исторический 15-й полёт Starship за 3 часа 45 минут до запуска
Начались продажи премиального флагмана Samsung W27
[Перевод] USB-C хаб за 40 евро превратился в док-станцию для Switch 2 благодаря 540 байтам прошивки питания и 108 байтам для HDR
Vivo X300 Ultra получил OriginOS 7: камеру улучшили, а автономность увеличили
Данные 46 тысяч сотрудников TSMC продают за 3 биткоина