ESP32 Promiscuous Mode
ESP32 Promiscuous Mode
Capteur passif de localisation intérieure utilisant un ESP32 et la ligne série. Ce firmware envoie périodiquement des informations sur les publicités WiFi et BLE via la ligne série, permettant la détection de présence et la localisation intérieure.
Vue d’ensemble
Contrairement à d’autres projets, la détection WiFi est effectuée en utilisant le mode promiscuous. Cela permet d’observer chaque paquet WiFi autour, sur plusieurs canaux, sans être connecté à un réseau. Le dispositif publie également les paquets publicitaires BLE reçus.
Les métriques et observations sont envoyées via série haute vitesse (921600 bauds), en préservant le format ASCII pour une meilleure lisibilité humaine.
Fonctionnalités principales
- Mode Promiscuous WiFi : Observation de tous les paquets WiFi sur plusieurs canaux
- Détection BLE : Capture des paquets publicitaires Bluetooth Low Energy
- Communication série : Sortie via série haute vitesse (921600 bauds)
- Format ASCII : Format lisible par l’humain pour faciliter le débogage
- Agrégation de données : Résumé des communications WiFi par canal et expéditeur chaque seconde
Applications
- Localisation intérieure : Suivi de position basé sur les signaux WiFi/BLE
- Détection de dispositifs : Identification et enregistrement des dispositifs présents
- Détection de présence : Détection de présence mobile et de dispositifs BLE
- Sécurité : Surveillance passive des réseaux WiFi environnants
Format de sortie
Les données sont envoyées sur la série série avec un protocole de correction simple :
S[LONGUEUR_PAYLOAD_3_CHIFFRES][PAYLOAD]\n
Format des paquets WiFi
PACKET,CHAN=[CANAL_2_CHIFFRES],RS=[SOMME_SIGNAL_DB],C=[NOMBRE_MESURES],SNDR=[ADRESSE_MAC_EXPEDITEUR]
Les paquets WiFi sont envoyés chaque seconde. La somme du signal et le nombre de mesures permettent de calculer la moyenne du signal (diviser RS par C).
Exemple :
PACKET,CHAN=06,RS=-88,C=1,SNDR=30:f3:83:df:12:6f
Format des paquets BLE
BLE,ADDR=[ADRESSE_PERIPHERIQUE],RSSI=[SIGNAL_RSSI],ADVDATA=[DONNEES_PUBLICITAIRES]
Exemple :
BLE,ADDR=4ddd6a235c9c,RSSI=-86,ADVDATA=1eff060001092006f14fc1612305d34d1d37e32eca559bb082c90bbce91f94
Technologies
- ESP32 : Microcontrôleur WiFi/BLE
- ESP-IDF 3.x : Framework de développement
- Mode Promiscuous : Mode d’écoute passive WiFi
- BLE : Bluetooth Low Energy
- C++ : Langage de développement principal
Compilation
- Installer le framework ESP-IDF 3.x
- Sourcer l’environnement :
source /path/to/esp-idf/export.sh - Compiler et flasher :
idf.py flash
Cas d’usage
- Domotique : Détection automatique de présence pour l’automatisation
- Sécurité : Surveillance passive des dispositifs WiFi/BLE dans une zone
- Localisation intérieure : Suivi de position basé sur les signaux reçus
- Analyse de trafic : Observation passive du trafic WiFi environnant
Avantages
- Passif : Aucune connexion réseau requise, observation pure
- Multi-canal : Observation simultanée sur plusieurs canaux WiFi
- Haute vitesse : Communication série à 921600 bauds
- Format lisible : Sortie ASCII facile à parser et déboguer
Contributions
Le projet est open-source et ouvert aux contributions. Les améliorations du protocole, le support de nouveaux formats de sortie et les optimisations de performance sont les bienvenues.