[Исследование] Собираем жучки-трекеры для слежки за передвижением в квартире

[Исследование] Собираем жучки-трекеры для слежки за передвижением в квартире
Всем привет!
​​

Лет 5 назад я задумался о том, что в наших квартирах постоянно существует радиоэфир: мы ловим чужой WiFi, сигналы Bluetooth, да и просто фоновые радиоволны проходят сквозь нас каждую секунду. Если понять как их обуздать, то мы сможем отслеживать передвижение людей в комнате (не без нюансов, конечно)​

​​

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

CSI (Channel State Information) - информация о состоянии канала в виде матрицы данных, которую выдает Wi-Fi чип. Она показывает, как именно исказилась радиоволна, пока летела от передатчика к приемнику.


Зона Френеля - эллипсоид, внутри которого проходит основная часть радиосигнала между передатчиком и приёмником.

Вышеописанные явления это основа, на которую мы будем опираться при построении "жучков"​​

Лично у меня это было:

1) 3 модуля ESP32-S3 (для более качественных данных их нужно больше)
Один из модулей станет приёмником (Rx), два других станут передатчиками (Tx)
2) Ноутбук
3) Парочка Type-C проводов и блоки питания к ним​​

​​

Ни для кого не секрет, что человек состоит на 70% из воды, а частота 2.4ГГц с которой мы будем работать отлично поглощается водой. Когда приёмник и передатчик общаются между собой, радиолуч образует зону Френеля. Пока комната пуста, сигнал отражается предсказуемо, радиоэфир находится в состоянии покоя.
Как только человек начинает двигаться в зоне Френеля волны искажаются:, вода внутри человека поглощает микроволны, часть волн огибают тело и приёмник получает совсем иную картинку, чем получал в состоянии покоя.
Приёмник, поймав сгенерированные пакеты от передатчиков, строит CSI-матрицу, фиксирует искажения радиополя, а мы в свою очередь анализируем их на ПК и красиво осциллографируем.​

Звучит как-то сложно, но это только звучит. Нам не обязательно понимать глубину наших глубин, за нас уже всё давным-давно придумано, мы лишь подстраиваем под себя.​​

​​

Чтобы наши "жучки" начали работать их нужно прошить.​​

Переходим на сайт Espressif

скачиваем оффлайн установщик и устанавливаем​​

​

После установки на рабочем столе появятся ярлыки CMD и PowerShell, я открывал PS и работал в нём.​​

​

​​

​

​

Спуфинг делайте для 2-го и последующих модулей, для 1-го модуля делать это не обязательно

Окружение установлено, теперь мы можем спуфить MAC-адрес. ​​

Для чего это нужно? Разные MAC-адреса в данном случае будут служить метками передатчиков, первый модуль с MAC-адресом N1 отвечает за зону A, второй модуль с MAC-адресом N2 отвечает за зону B.

Для того чтобы подменить MAC-адрес, мы переходим в директорию куда мы устанавливали наше окружение. Примерный путь: ​

C:\Espressif\projects\esp-csi\examples\get-started\csi_send\main
​​

Перейдя, мы увидим 3 файла, один из которых называется app_main.c​

​​

Открываем, например, блокнотом app_main.c и ищем примерно 47 строчку​

​​

Меняем последний байт в массиве с "0" на "1", сохраняем и закрываем
​

Переходим непосредственно к самой прошивке передатчиков
В установленном окружении переходим в нужную директорию командой:
cd C:\Espressif\projects\esp-csi\examples\get-started\csi_send

Параллельно с этим открываем диспетчер устройств, подключаем по USB наш модуль к порту COM и смотрим какой порт выдал нам Windows​​


Прописываем команду: idf.py -p COM4 flash monitor но вместо 4 ставим тот порт который указан в диспетчере устройств и ждём когда прошьётся наш модуль. ​


​


Переходим в директорию командой ​

cd C:\Espressif\projects\esp-csi\examples\get-started\csi_recv​​

И запускаем прошивку и мониторинг порта командой​

idf.py -p COM4 flash monitor​​


Я подключил оба передатчика в розетки и раскидал по комнате, чтобы показать MVP. Теперь они образовывают букву V​​



​​

Данные, которые сейчас получает приёмник это просто мусор. Туда попадают сигналы чужих WiFi, сигналы смартфонов и случайный шум. Сейчас мы этот мусор использовать не можем.

Что же нам делать? Конечно фильтровать и отсеивать всё, кроме наших MAC-адресов ​​


Кое-кто набросал мне (не с 1 попытки, конечно) простенький парсер, код которого можно взять отсюда​​


Парсер смотрит на найденный MAC-адрес и если совпадает с зоной А, то отправляет пакет на порт 5005, если с зоной Б, то на порт 5006. Всё остальное отбрасывается.​​

Простой набор матриц не интересен и мы снова кое-кого попросили набросать простенький UI
И не без труда заставили его отслеживать и показывать есть ли движение в комнате
Код UI можно найти тут​​


​​


Когда я пересекаю линии между передатчиком и приёмником график начинает возмущаться и отображает "Замечено движение". ​​

В сухом остатке мы имеем "жучок" созданный на коленке за пару часов, использующий дешёвенькие модули ESP32-S3.​​

Диапазон 2.4 ГГц не может сильно пробить бетонные стены, поэтому мы, к сожалению, не сможем следить за соседями. Частота необходимая для преодоления бетонных стен хотя бы 800МГц и ниже (чем меньше частота тем больше её проходимость сквозь препятствия), но из модулей использующие такие частоты невозможно извлечь CSI.

Если мы создадим mesh-сеть из 6-8 жучков, то в целом мы можем отслеживать 3D координаты человека в комнате, т.к. мы сможем собирать больше пересекающихся лучей и матриц CSI с разных ракурсов.

Опять же повторюсь, у меня не было цели создать реально какой-то шпионский жучок, поэтому не стоит ожидать чего-то сверхъестественного.
Всем добра!​

Комментарии 0

Пока нет комментариев. Начните обсуждение.
Войдите, чтобы оставить комментарий.
Назад
Верх