
Спуфинг геолокации Wi-Fi с помощью ESP8266 / ESP32

SkyLift — экспериментальное устройство для подмены геолокации по Wi-Fi/BT, использующее платы ESP8266 или ESP32 для передачи Wi-Fi beacon-кадров или BT-рекламных объявлений, имитирующих беспроводную инфраструктуру удалённого/целевого местоположения. Приведённый выше пример демонстрирует успешную подмену геолокации на дом Питера Тиля на Гавайях из проекта DataPools (2018).
Мобильные устройства (например, iOS и Android) полагаются на эту информацию для основных служб геолокации, когда спутниковые GPS-сигналы слабы, что часто происходит в городских условиях или в помещениях, похожих на подвалы.
Наилучших результатов проект достигал при использовании нескольких устройств SkyLift на открытом воздухе, размещённых аналогично реальным (целевым) роутерам: это подавляло существующую Wi-Fi инфраструктуру и сбивало с толку большинство мобильных устройств. Также он хорошо работал в переполненных помещениях, где тела людей (на 2/3 состоящие из воды) поглощают энергию Wi-Fi, поскольку 2,4 ГГц — резонансная частота молекул воды.
Однако до сих пор неясно, каковы оптимальные настройки структуры Wi-Fi-пакетов, какие ещё факторы влияют на возможность переопределять основные службы геолокации и есть ли в мобильных операционных системах встроенные технологии защиты от спуфинга. Скорее всего, в обычных условиях этот код будет иметь ограниченный успех, однако низкая стоимость прототипирования оборудования и потенциально значимые результаты делают этот проект достойным дальнейшего изучения.
http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.jsonПроверено на Linux Ubuntu 20.04
Python
python -m venv venv
source venv/bin/activate
python setup.py develop
skylift
Usage: skylift [OPTIONS] COMMAND [ARGS]...
SkyLift
Options:
--help Show this message and exit.
Commands:
convert-scan Convert WiFi/BT network can to Networks JSON
create-sketch Creates new Arduino sketch from template
Преобразование WiFi/BT-скана в JSON сетей
skylift convert-scan -i path/to/scan.csv -o path/to/scan.json
Создание Arduino-скетча из шаблона
skylift create-sketch -i path/to/scan.json -o path/to/scan-arduino/
Настройка дополнительных параметров
skylift create-sketch
-i path/to/scan.json
-o path/to/scan-arduino/
--max-networks 12
--board esp32
Linux
sudo chmod a+rw /dev/ttyUSB0pip install pyserial --user