Programmer un renifleur de réseaux WiFi
publication: 21 mai 2026 / mis à jour 21 mai 2026
Préambule
Dans cet article, certaines définitions ne seront pas détaillées. Vous les retrouverez facilement dans les fichiers sources de ce projet WiFi.
Vous trouverez tous les codes sources ESP32forth afférents à cet article ici:
Wifi ESP32forth project.
Structuration des fichiers:
- config.fs stocke certains paramètres de configuration généraux
- main.fs le fichier principal chargé de récupérer le contenu des autres fichiers
- voc-extend.fs contient des définitions étendant le vocabulaire, usage général
- wifiManage.fs contient des définitions en lien direct avec l'interface WiFi
- wifiScan.fs contient le code en rapport avec cet article
Le contenu de ces fichiers est susceptible d'évoluer en fonction d'autres développements.
Pour exploiter leur contenu, récupérez ces fichiers et transférez leur contenu dans l'espace de stockage SPIFFS de votre carte ESP32.
Une fois transférés, tapez main ou include /SPIFFS/main.fs.
Scan d'un réseau WiFi
Il s'agit ici de scanner le réseau wifi qui est à portée de votre carte ESP32. La carte ESP32 utilisée n'exploite que les fréquences en 2 Ghz. Elle ne peut donc pas détecter les réseaux émettant dans les fréquences à 5 ou 6 Ghz. Mais les canaux en 2 Ghz sont encore très nombreux.
Pour débuter un scan réseau, il faut d'abord initialiser notre carte ESP32 en mode station:
WIFI_MODE_STA WiFi.mode
Cette initilisation ne nécessite aucune connexion à un routeur WiFi.
L'opération suivante consiste à nettoyer toute ancienne connexion:
WiFi.disconnect \ cut all connexions 500 ms \ wait for security cr ." Scan in progress..." cr
On lance maintenant un scan réseau wifi. CEci est réalisé au travers du mot
WiFi.scanNetworks. Ce mot fait partie des mots étendant le vocabulaire initial wifi.
Voir l'article: Extension du vocabulaire WiFi pour ESP32forth
WiFi.scanNetworks \ Launch scan
Ce mot restitue le nombre de points WiFi détectés. Pour une valeur n, on va analyser les
données de chaque point en utilisant un index compris entre 0 et n-1. C'est ce que va faire le mot
.network dont voici la définition:
: .network { netId -- }
netId WiFi.channel 4 .r .vbar
netId WiFi.RSSI 4 .r .vbar
netId WiFi.encryptionType decode-encryption 8 -spaces .vbar
netId WiFi.SSID z>s type cr
;
Boucle de scan réseau
Le scan réseau est effectué dans une boucle do..loop. Voici la définition
de net-scan:
only FORTH also wifi \ scan local wifi network : net-scan ( -- ) WIFI_MODE_STA WiFi.mode WiFi.disconnect \ cut all connexions 500 ms \ wait for security cr ." Scan in progress..." cr WiFi.scanNetworks \ Launch scan dup { ssidFounded } \ store in local variable ssidFounded case -1 of ." Erreur: Scan failed (Busy)" cr exit endof -2 of ." Error: WiFi not initialized" cr exit endof endcase ." Founded networks: " ssidFounded . cr ssidFounded 0 > if .headNetwork ssidFounded 0 do i .network \ display datas of each founded network loop then WiFi.scanDelete \ free ressources ." Memory cleaned" cr ; only FORTH
Ce mot regroupe les opérations d'initialisation de l'interface wifi de notre carte ESP32, puis le scan réseau et enfin l'analyse de chaque réseau détecté.
Voici un exemple de ce que restitue un scan réseau:
Scan in progress... Founded networks: 2 chan | RSSI | encType | SSID -----+------+----------+--------------------------- 5 | -55 | WPA2 | ARLO_VMB_1582925691 5 | -56 | WPA2 | Livebox-1390L Memory cleaned ok
Cette analyse permet de détecter en particulier:
- des canaux saturés,
- des SSID sans mot de passe
- des SSID avec un faible niveau de protection
Si certains canaux sont surchargés, vous pouvez reprogrammer vos équipements vers des canaux non chargés.
Un scan réseau permet également de voir si une autre carte ESP32 est visible. Le paramètre RSSI indique la force du signal reçu par la carte ESP32.
Evolutions envisageables
Ici, le mot net-scan est le point de départ d'une application qui peut être bien plus ambitieuse:
- couplé à un module GPS, on pourrait rajouter les géo-coordonnées de chaque scan
- enregistrer les SSID et données associées dans un fichier, au format csv
- détection d'un point de connection spécifique et s'y connecter automatiquement
- détection d'un point de connexion sans protection et s'y connecter automatiquement pour transmettre et recevoir - avec précaution - des données de/vers un serveur.
Bien programmé, avec une batterie et une bonne gestion de l'alimentation électrique, la carte ESP32 peut devenir un redoutable outil de reniflage réseau.
Legal: site web personnel sans commerce / personal site without seling
