Comments 82
Всё это делается на ESP32-C5. Бонусом WiFi 5GHz
О помню тоже баловался подобным, только без отдельного железа, в виде приложения для Android на телефон.
Ещё делал похожий BLE сканер, с геопозиционированием.
Но вы упираетесь в ограничения Android. Вы не можете просто так взять и поделать что угодно агрессивное в wi-fi/BT, что вам не позволит OS со своими лимитами.
По вопросу в конце темы можно посмотреть на arduino giga wifi. Насчёт gnss не уверен, зато всего остального довольно много, МК STM32H7
Вардрайвинг изобретен много лет назад. Как лаптоп решениями, так и телефонными - тот же Вигл :)
В соло, без комьюнити рисовать карту - утопия.
Нынче делать какое-то такое приложение на микроконтроллере просто глупо.
Вам не приходила в голову мысль, что все это занятие, что описано в статье - просто бессмысленно и глупо?))
Да, бессмыссленно и безполезно. Не выгодно. Одни расходы.
Но это же жутко интересно! Искренне завидую автору, как он занимается этим бесполезным занятием, читаю с удовольствием)
Почему бесполезная, если к этому добавить проверку на открытую сеть и попытку к ней подключиться и получить какие-то данные, то можно собрать точки бесплатного интернета. Ещё как идея, можно проверять сеть на простые пароли по словарю.
идея - бесполезная.
Бесполезной она может быть для общества, желающего реализовать её с целью извлечения прибыли. Для другой части общества (включая автора идеи) она полезна в качестве обучающего проекта. Но оценка идеи появляется, только когда она становится оформленой и выложенной в общество. В остальных случаях она так и остаётся частью процесса обучения лично автора. Главное, чтобы авторы не принимали её на свой счёт и продолжали заниматься интересующим их делом.
Он некоторое время даже был бесплатный.
Гугл и так все то получает, если это не запрещено в настройках Settings / Location / Google Location Sharing.
Даркнету это тоже не нужно т.к. уже лет 20 примерно есть полностью волонтерские движухи по сканированию огромных территорий, заканчивающиеся выкладкой даты в централизованную базу и предоставлением доступа через API. Это все счастье валяется в сети бесплатно. Вот так, например, выглядит вайфайная Москва на картах Wigle .
Я решил исследовать окрестности города на наличие источников WiFi излучения.
старому доброму wardriving уже более 20 лет как. помню статьи в журнале ][kep Там конечно обычно что то с внешней антенной для дальности , всякие малины, кэши и хеши.
bluetooth эфир гораздо разнообразнее
любая из многочисленных "альтернатив flipper" на esp32 тоже предоставляет много вариантов для копания с wifi. Самое забавное что даже к flipper полюбили подключать внешний модуль на esp32 для работы с wifi
Ну не знаю . У меня Москва примерно так:

Это меньше, чем в каком-нибудь Сан Франциско, но явно не ноль. Кто-то бродит там с этой программой, сканирует что-то.
В Питере, кстати, по результатам сканирования получились какие-то странные "круги на полях":

У меня был проект WiFi на транспорте в г.Томск. Я собирал мак адреса сканируя эфир WiFi роутерами и скалдывал в БД. Позднее сделал систему отслеживания автобусов по радиоэфиру, и прикрутил к 2гис. Это не бесполезное занятие, а просто не дооценённая идея до которой еще не дошли массы. Если дело в экономике и дальше так пойдёт, то глонасс скорее всего прикажет долго жить, потребуются альтернативы, и ваши труды не пропадут даром, можете не сомневаться. Там человек выше советовал ESP32-c5, вполне дельное замечание. Если перенесёте проект на эту платформу, и дадите гитхаб ссылку, буду признателен.
Приложение для мобилки интересная тема. Надо бы собрать. Сканить эфир, собирать MAC + геотеги и отправлять на свой сервер. Займусь пожалуй на досуге, всё для этого есть.
Всё это делается на ESP32-C5. Бонусом WiFi 5GHz
Причём есть куча готовых решений. (я про код, если что).
Но пройти пусть самому, это конечно интересней.
Как по мне, идея - бесполезная. Но как пет-проект, вполне.
Почему бесполезная, если к этому добавить проверку на открытую сеть и попытку к ней подключиться и получить какие-то данные, то можно собрать точки бесплатного интернета. Ещё как идея, можно проверять сеть на простые пароли по словарю.
Кажется, вы сейчас предлагаете вторгаться в чужие сети и незаконно использовать их ресурсы.
Про незаконное использование ресурсов это вы придумали. Например, мне было бы просто интересно собраться статистику сетей just for fun без намерения их как-то использовать, лишь чисто научный интерес.
А потом продать накопленную информацию в Даркнете или гуголю для более точного A-GPS/Y-GPS. Или нет? Тогда, зачем лично вам вся эта собранная информация? Мне действительно интересно.
Гугл и так все то получает, если это не запрещено в настройках Settings / Location / Google Location Sharing.
Даркнету это тоже не нужно т.к. уже лет 20 примерно есть полностью волонтерские движухи по сканированию огромных территорий, заканчивающиеся выкладкой даты в централизованную базу и предоставлением доступа через API. Это все счастье валяется в сети бесплатно. Вот так, например, выглядит вайфайная Москва на картах Wigle .
зачем лично вам вся эта собранная информация?
Например, сделать анализ разных частей города или городов между собой и написать статью на хабре, если что-то интересное из этого получится.
идея - бесполезная.
Бесполезной она может быть для общества, желающего реализовать её с целью извлечения прибыли. Для другой части общества (включая автора идеи) она полезна в качестве обучающего проекта. Но оценка идеи появляется, только когда она становится оформленой и выложенной в общество. В остальных случаях она так и остаётся частью процесса обучения лично автора. Главное, чтобы авторы не принимали её на свой счёт и продолжали заниматься интересующим их делом.
Как по мне, идея - бесполезная.
Сейчас много самокатов (автомобилей) на прокат.
Их сервера могут находить отдельные самокаты по списку WiFi SSID которые их окружаю.
Вы самокаты или автомобили сдаёте в аренду?
У меня был проект WiFi на транспорте в г.Томск. Я собирал мак адреса сканируя эфир WiFi роутерами и скалдывал в БД. Позднее сделал систему отслеживания автобусов по радиоэфиру, и прикрутил к 2гис. Это не бесполезное занятие, а просто не дооценённая идея до которой еще не дошли массы. Если дело в экономике и дальше так пойдёт, то глонасс скорее всего прикажет долго жить, потребуются альтернативы, и ваши труды не пропадут даром, можете не сомневаться. Там человек выше советовал ESP32-c5, вполне дельное замечание. Если перенесёте проект на эту платформу, и дадите гитхаб ссылку, буду признателен.
Всё это делается на ESP32-C5
Или RTL8720DN, что даже лучше.
О помню тоже баловался подобным, только без отдельного железа, в виде приложения для Android на телефон.
Ещё делал похожий BLE сканер, с геопозиционированием.
Да. И это самое правильное решение.
Нынче всю электронику выгоднее проще и дешевле делать на модулях c Embedded Linux внутри с OS Android. Сейчас всё в смартфоне! Люди не хотят носить с собой ничего электронного, кроме своего смартфона.
Нынче делать какое-то такое приложение на микроконтроллере просто глупо. Вы 80% времени потратите на поиск ошибок в цепи электропитания на PCB и 20% времени останется на авральную разработку кода прошивки самого приложения. Разумнее просто взять смартфон и написать приложение для смартфона.
Реалии таковы, что умение программировать user-space приложения под Android на Kotlin или iOS на порядок эффективнее, чем умение программировать System Software для микроконтроллера на Си.
Но вы упираетесь в ограничения Android. Вы не можете просто так взять и поделать что угодно агрессивное в wi-fi/BT, что вам не позволит OS со своими лимитами.
Как будто нейросеть ответила.
Нынче делать какое-то такое приложение на микроконтроллере просто глупо.
Вам не приходила в голову мысль, что все это занятие, что описано в статье - просто бессмысленно и глупо?))
Да, бессмыссленно и безполезно. Не выгодно. Одни расходы.
Но это же жутко интересно! Искренне завидую автору, как он занимается этим бесполезным занятием, читаю с удовольствием)
Реалии таковы, что умение программировать user-space приложения под Android на Kotlin или iOS на порядок эффективнее, чем умение программировать System Software для микроконтроллера на Си.
Ну не могу успокоится))
Я уже много лет просто мечтаю запрограммировать микроконтроллер на Си, и желательно на голом железе! Я даже купил их парочку, но все никак не найду время...
мечтаю запрограммировать микроконтроллер на Си
Вот есть методичка по настройки окружения разработчика
Настройка ToolChain(а) для Win10+GCC+С+Makefile+ARM Cortex-Mx+GDB
https://habr.com/ru/articles/673522/
Ох, а вы автор же и есть) И разработчик на микроконтроллерах))
Я воспринял этот комментарий как критику автора в стиле "не надо заниматься этой ерундой, проще купить готовую платформу")
Вардрайвинг изобретен много лет назад. Как лаптоп решениями, так и телефонными - тот же Вигл :)
В соло, без комьюнити рисовать карту - утопия.
А почему не простенькое приложение на телефон?
По вопросу в конце темы можно посмотреть на arduino giga wifi. Насчёт gnss не уверен, зато всего остального довольно много, МК STM32H7
https://www.mylnikov.org/ заблокирован смотрю)
Как пользоваться https://www.mylnikov.org/ не ясно.
Да. https://wigle.net/ ничего не показывает про Москву
Он в России частично попадает под блокировку РКН. Сайт показывается, карта нет.
Стартануло у меня с LA и показывало тепловую карту. Стал менять масштаб, чтобы найти свой город на другом континенте - стало показывать DAILY LIMIT как на картинке выше. И даже если вернуться в LA. Ещё требует настойчиво залогиниться. Нахожусь не в РФ.
Ну не знаю . У меня Москва примерно так:

Это меньше, чем в каком-нибудь Сан Франциско, но явно не ноль. Кто-то бродит там с этой программой, сканирует что-то.
В Питере, кстати, по результатам сканирования получились какие-то странные "круги на полях":

У меня всё работает! (с)
А я вот опять открыл и вот опять, сначала показало а потом при зумауте сразу в лимит упало.
В Питере, кстати, по результатам сканирования получились какие-то странные "круги на полях":
Это работа радио электронной борьбы. Происходит подмена GPS координат на круги за пределами города. В Москве та же ситуация. GPS трэкеры рисуют круги над аэропортом Шереметьево.
Какая частота опроса окружения? И что самое важно как быстро вы ехали?)
Это вы ещё pwnagotchi не видели
Мне приходится эпизодически кататься на велосипеде
Сочувствуем.
Главное чтоб за шпиона не приняли. А то потом долго придется объяснять что это за устройство с проводочками...
Картина из далеких 90х. Нет не интернетов, не телефонов, ни даже нормальных магазинов с радиодеталями. Собрали с другом передатчик на 22.5 Мгц. Ну просто кварцевый резонатор такой был, другого не было) Мощность - милливат 100-300.
И еще собрали приемник, прямого преобразования. Схема очень простая, сигнал с антенны через фильтр подается на смеситель на двух встречно-параллельных диодах, гетеродин и УНЧ на трех транизисторах. Несмотря на простоту, чувствительность такого приемника очень высокая, доли микровольта.
Повесели антенну у него во дворе на заборе. Пошли с приемником гулять и смотреть, как далеко сигнал есть. Поскольку антенна очень низко, сигнал идет с кучей отражений. Идешь - сигнал резко возрастает, потом делаешь несколько шагов, падает и почти пропадает. Приемник в пластмассовом пенале с телескопической антенной, из нее провод, наушники. Антенной водим - вверх поднимаем, иногда к земле, смотрим как меняется сигнал.
Лет по 18 нам тогда было. На встречу идет бабушка и с интересом смотрит за нашими действиями. И спрашивает "А что это такое вы тут делаете?". Мы молчим, отмахиваемся. Бабушка не отстает "А я знаю, что вы тут делаете! Радиацию меряете!". Что мы ответили - не помню, но бабушка полностью уверовалась, что нас раскусила) И не отстает "Ну и как тут? Нормально?". Мы отвечаем - да-да, все в порядке) А потом бабушка вдруг - "Ну а вот в таком-то месте как?". Называет поселок неподалеку. А там вроде как ракетная часть стояла, ходили слухи, что и с ядерным оружием. Ну мы поддержали ее, ответив: "Да-да, там повышенная" )))
Каждый смартфон делает всё то же самое, причем куда более эффективнее. Так как там есть богатое connectivity, чтобы сливать подготовленною карту wifi сетей в здание с пятью углами.
Имхо: esp32-* (я бы выбрал c3 на плате mini, просто потому что она прикольная, хоть и глючная), или сама по себе esp8266. Плюс любой жпс модуль с питанием от 5в. Приправить сверху esp-idf + freeRTOS., хотя в общем пойдет и ардуйня.
Питание от павербанка, запись данных - на внутреннюю флешку.
А ставить доп.контроллер, общаться с есп по юарт, писать на флешку... Слишком много лишних модулей.
Зы: курсач?
ЗЗЫ: ну и чисто красоты для - ищется что-то типа L80-R в smd исполнении, рисуется двусторонняя плата и получается девайс размером примерно 20х20х20мм с торчащим наружу usb-c
Ну да, выше уже сказали про C5, C6/C61 тоже подошло бы, там стандарты посвежее (мало ли кто гоняет точку доступа в AX only), есть BLE, не менее интересный, так как это всякие умные ТВ, холодильники, тостеры и прочее что не часто меняет свое местоположение. И еспшки это самодостаточные микроконтроллеры, зачем там STM и общение через AT команды?
Какая модуляция используется в WiFi?
OFDM, что даёт куда более интересные возможности чем просто сканить точки вокруг по RSSI:
"4 Гараж для SD карты 1"
Как будто перевод не тот)
Я решил исследовать окрестности города на наличие источников WiFi излучения.
старому доброму wardriving уже более 20 лет как. помню статьи в журнале ][kep Там конечно обычно что то с внешней антенной для дальности , всякие малины, кэши и хеши.
bluetooth эфир гораздо разнообразнее
любая из многочисленных "альтернатив flipper" на esp32 тоже предоставляет много вариантов для копания с wifi. Самое забавное что даже к flipper полюбили подключать внешний модуль на esp32 для работы с wifi
Что мешает Яндексу в навигаторе сделать нечто аналогичное?
Какая же это графомания...
PS Документ со схемой недоступен в гуглдоке.
Приложение для мобилки интересная тема. Надо бы собрать. Сканить эфир, собирать MAC + геотеги и отправлять на свой сервер. Займусь пожалуй на досуге, всё для этого есть.
Конечно! Вот отформатированный текст промта для копирования в комментарий на Habr (или любой другой форум/блог). Он готов к вставке “как есть”.
**Промт для нейросети / ТЗ на Android-приложение для вардрайвинга (Wi-Fi + GPS + отправка на PHP/MySQL)**
Коллеги, прошу помощи в генерации кода. Нужно полное Android-приложение на **Java** (API 26+) со следующим функционалом. Готов принять код от нейросети или от разработчика по этому ТЗ.
## Что должно делать приложение
1. Сканировать Wi-Fi точки доступа (MAC, SSID).
2. Одновременно получать GPS-координаты.
3. Сохранять данные в локальную SQLite.
4. Отправлять накопленное на сервер (NGINX + PHP + MySQL).
5. Работать в фоне с уведомлением (Foreground Service).
6. Иметь два экрана: первый запуск (настройка) и главный (статус + лог).
7. В настройках можно менять страну/город/адрес сервера.
## Структура БД на сервере (MySQL)
```sql
CREATE TABLE `wifi_scans` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`city` VARCHAR(100) NOT NULL,
`mac` VARCHAR(17) NOT NULL,
`latitude` DECIMAL(10,8) NOT NULL,
`longitude` DECIMAL(11,8) NOT NULL,
`timestamp` BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
INDEX `idx_mac` (`mac`),
INDEX `idx_city` (`city`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Экран первого запуска (FirstRunActivity)
Показывается один раз. Поля:
Страна (EditText)
Город (EditText)
IP или домен сервера (EditText, пример: 192.168.1.100 или myserver.com)
Кнопка «Сохранить и продолжить». После нажатия:
Сохранить в SharedPreferences
Запустить WifiScanService
Перейти на MainActivity
Главный экран (MainActivity)
Элементы сверху вниз:
Текстовое поле «Статус: сервер (адрес)»
Текстовое поле «Ожидает отправки: N»
Кнопка «Настройки» (открывает SettingsActivity)
Заголовок «Лог работы»
RecyclerView со списком логов (последние 50, обновление каждые 2 секунды)
Каждый лог: время (HH:MM:SS) + сообщение. Цвет текста:
INFO – чёрный
SUCCESS – зелёный
ERROR – красный
Экран настроек (SettingsActivity)
Полностью повторяет форму первого запуска (Страна, Город, Сервер). Кнопки:
Отмена (закрыть окно)
Сохранить (обновить SharedPreferences, перезапустить WifiScanService, закрыть окно)
Фоновый сервис (WifiScanService)
Foreground Service с уведомлением «Wi-Fi Scanner активен»
Интервал сканирования 10 секунд (жёстко в коде или из настроек)
Шаги каждые 10 секунд:
Проверить разрешения (ACCESS_FINE_LOCATION)
Включить Wi-Fi, если выключен
wifiManager.startScan()
Получить ScanResults
Получить последнюю GPS-координату (LocationManager.GPS_PROVIDER)
Если GPS = null — пропустить сканирование, записать в лог «Нет GPS сигнала»
Для каждого ScanResult сохранить в локальную БД (таблица wifi_cache): MAC, SSID, latitude, longitude, timestamp, страна, город
Записать в лог «Сохранено X сетей»
Запустить UploadManager.tryUpload()
UploadManager
Отдельный поток (Executors)
Берёт из wifi_cache до 50 записей (getUnsentRecords)
Формирует JSON:
[{"city":"Moscow","mac":"AA:BB:CC:DD:EE:FF","latitude":55.7558,"longitude":37.6176,"timestamp":1734567890000}]
Отправляет POST на URL:
{сервер}/api/upload_wifi.phpЗаголовки:
Content-Type: application/json,X-API-Key: your_secret_api_key_hereПри HTTP 200 — удаляет отправленные записи из локальной БД
При ошибке — оставляет для следующей попытки
Логирует результат (успех / ошибка)
Локальная БД (DatabaseHelper)
Таблица wifi_cache
id (INTEGER PRIMARY KEY)
mac (TEXT)
ssid (TEXT)
latitude (REAL)
longitude (REAL)
timestamp (INTEGER)
country (TEXT)
city (TEXT)
Таблица logs
id (INTEGER PRIMARY KEY)
message (TEXT)
type (TEXT)
timestamp (INTEGER)
Методы
addWifiRecord(WifiRecord)
List getUnsentRecords(int limit)
deleteRecords(List)
addLog(String message, String type)
List getRecentLogs(int limit)
int getPendingCount()
Модели
WifiRecord(String mac, String ssid, double lat, double lng, long timestamp, String country, String city)
ScanLog(String message, String type, long timestamp) // + геттеры
PreferencesManager
SharedPreferences:
country
city
server_url
is_first_run (boolean)
scan_interval (int, секунды, опционально)
upload_batch_size (int, опционально)
Методы: set/get для каждого, hasAllSettings()
PHP-скрипт (сервер)
Файл: /api/upload_wifi.php
Логика:
Проверить метод POST
Проверить заголовок X-API-Key
Прочитать JSON из php://input
Подключиться к MySQL
Для каждой записи выполнить INSERT IGNORE (или ON DUPLICATE KEY UPDATE)
Вернуть JSON:
{"success": N, "total": M, "errors": []}
Разрешения в AndroidManifest.xml
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
ACCESS_WIFI_STATE
CHANGE_WIFI_STATE
INTERNET
FOREGROUND_SERVICE
WAKE_LOCK
ACCESS_BACKGROUND_LOCATION
Технические требования
Язык: Java (не Kotlin)
minSdk: 26 (Android 8.0)
targetSdk: 33 или 34
Зависимости в build.gradle: appcompat, material, recyclerview
Весь код должен компилироваться в Android Studio без ошибок
Желательно
START_STICKY для сервиса
Лог хранить последние 500 записей (автоочистка старых)
При изменении настроек — сервис перезапускается с новыми параметрами
Обработка отсутствия GPS (не сохранять, писать в лог)
Что нужно получить на выходе
Полный архив проекта Android Studio:
Все .java файлы по пакетам
Все .xml layouts (activity_first_run, activity_main, activity_settings, item_log)
AndroidManifest.xml
build.gradle (app level)
PHP-скрипт upload_wifi.php
Промт для нейросети. ЯП Java Код должен быть готов к копипасте и сборке. Спасибо!






Детектор WiFi излучения (WiFi дозиметр)