
htop pour les ondes — un tableau de bord RF 802.11 (Wi-Fi) en direct dans votre terminal
htop pour les ondes — un tableau de bord RF 802.11 (Wi-Fi) en direct dans votre terminal.
airtop transforme le trafic Wi-Fi autour de vous en un tableau de bord en direct dans le terminal — un spectre de fréquences des points d'accès à proximité, des traces de signal par station, un flux d'activité par type de trame, un histogramme RSSI et une liste déroulante des réseaux découverts — dessiné avec des caractères braille et des graphiques en blocs sur eBPF.
[!TIP] Pas de mode moniteur, pas de sockets bruts. airtop attache des programmes eBPF à
mac80211/cfg80211et lit les trames 802.11 lorsqu'elles traversent la pile Wi-Fi du noyau, donc il fonctionne sur votre interface normale connectée sans perdre votre lien.
curl -fsSL https://yeet.cx | sh
yeet run https://github.com/yeet-src/airtop
Pour une capture d'écran partageable, anonymisez les SSID et les MAC (votre réseau et ceux de vos voisins sont renommés network-01, station-02, …) :
yeet run https://github.com/yeet-src/airtop -- --anonymize
S'exécute jusqu'à Ctrl-C. Redimensionnez le terminal et la disposition se réorganise ; minimum 80×24.
Pour révéler les réseaux voisins, le noyau a besoin des résultats de scan. Votre OS scanne périodiquement tout seul, ou forcez-en un :
nmcli dev wifi rescan # ou : iw dev <iface> scan
Le Wi-Fi est la famille de normes IEEE 802.11. Le modèle mental :
Tout est une trame. Votre ordinateur portable, téléphone et routeur échangent de courts paquets radio appelés trames. Chaque trame porte des adresses MAC, et l'une d'elles (le BSSID) identifie le point d'accès auquel elle appartient.
Trois classes de trames :
| Class | Exemples | Objectif |
|---|---|---|
| Management | Beacon, Probe, Auth, Assoc, Deauth | annoncer, rejoindre et quitter les réseaux |
| Control | ACK, RTS/CTS | coordonner qui peut parler |
| Data | votre trafic réel | transporter les données |
Les points d'accès émettent des balises. Un PA s'annonce environ 10 fois par seconde avec une trame de balise portant son nom de réseau (SSID) et son BSSID. C'est ainsi que la liste Wi-Fi de votre téléphone se remplit, et comment airtop découvre les PA.
Canaux et fréquence. Le Wi-Fi vit dans des bandes (2.4 GHz, 5 GHz, 6 GHz), chacune divisée en canaux, et chaque canal est une fréquence centrale en MHz (canal 6 ≈ 2437 MHz, canal 161 ≈ 5805 MHz). Une radio écoute un canal à la fois, c'est pourquoi vous voyez principalement le trafic sur votre canal.
La force du signal (RSSI) est mesurée en dBm. Les valeurs sont toujours négatives, et plus proches de zéro est plus fort :
| RSSI | qualité |
|---|---|
| −30 … −50 dBm | excellent (juste à côté) |
| −50 … −67 dBm | bon |
| −67 … −80 dBm | utilisable |
| −80 … −90 dBm | faible / marginal |
Principalement des utilisateurs domestiques déboguant un Wi-Fi instable, et des administrateurs réseau choisissant des canaux avant un événement.
Chaque panneau correspond aux concepts ci-dessus :
En-tête — temps de fonctionnement, trames totales vues, stations actives, PA découverts, nombre de balises, nombre de deauth (en rouge si non nul), et votre canal actuel. Le compteur de deauth est celui à surveiller ; les réseaux sains en ont zéro.
Spectre de fréquences — chaque PA découvert dessiné comme une « bosse » de signal positionnée à sa fréquence centrale réelle sur un axe MHz. La hauteur et la couleur montrent le RSSI ; l'étiquette est le SSID + dBm. Des bosses qui se chevauchent révèlent une congestion sur le même canal — la vue classique d'un analyseur Wi-Fi, et la réponse à « pourquoi mon Wi-Fi est lent ? »
RSSI × temps — un graphique en ligne braille par station active traçant son signal sur les dernières secondes. Regardez un lien s'affaiblir lorsqu'un appareil s'éloigne du PA, ou bondir quand quelqu'un déplace son ordinateur portable.
Flux de trames — une carte de chaleur des types de trames dans le temps ; couleur de cellule = combien de ce type sont arrivées par tranche. Un déluge de deauth illumine cette ligne instantanément, ce qui est le modèle d'alerte que vous voulez vraiment.
Histogramme du signal — distribution des trames reçues par RSSI. La « forme » de votre environnement RF : un pic serré autour de −50 dBm signifie que vous êtes proche d'un PA fort, une traînée de −60 à −80 signifie un environnement encombré.
Points d'accès — SSID découverts avec canal, indicateur de signal et dBm, triés du plus fort au plus faible.
Un seul objet BPF (airtop.bpf.c) attache deux programmes fentry et envoie les événements vers l'espace utilisateur via des tampons annulaires :
| Hook | Ce qui est capturé |
|---|---|
fentry/ieee80211_rx_list | chaque trame 802.11 reçue : type/sous-type, adresses, RSSI depuis ieee80211_rx_status |
fentry/cfg80211_inform_bss_frame_data | chaque PA découvert par les scans du noyau : SSID, canal, signal |
Le tableau de bord fonctionne dans le runtime V8 de yeet, s'abonnant à ces tampons annulaires et rendant l'interface terminal :
main.js entrée : taille du terminal, boucle de rendu, liaison/abonnement BPF
state.js données en direct + ingestion de trames/scans
render.js ANSI, rampes de couleurs, toile braille et graphiques (pur)
dashboard.js panneaux + disposition (renderDashboard)
[!IMPORTANT] Linux avec BTF :
CONFIG_DEBUG_INFO_BTF=yetCONFIG_DEBUG_INFO_BTF_MODULES=y. Par défaut sur les versions actuelles d'Arch, Fedora, Ubuntu et Debian 12+. CO-RE signifie pas de recompilation par noyau.
cfg80211/mac80211 (n'importe quelle carte Wi-Fi normale sous Linux).curl -fsSL https://yeet.cx | sh l'installe.[!NOTE] Ce que airtop ne fait pas :
tx_status séparé.fentry sont stables en pratique mais ne sont pas une ABI du noyau ; les données exactes dépendent de votre pilote Wi-Fi.Est-ce que cela nécessite le mode moniteur ? Non. C'est tout l'intérêt. airtop s'accroche à la pile Wi-Fi du noyau depuis l'intérieur, donc il fonctionne sur votre interface normale connectée.
Cela va-t-il couper ma connexion ? Non. Il n'y a pas de changement de mode ; votre interface reste associée à ce à quoi elle est associée. airtop observe ce que le noyau fait déjà.
Pourquoi je ne vois qu'un ou deux réseaux ?
Parce que votre radio écoute un seul canal (le sien) la plupart du temps. Les réseaux voisins apparaissent lorsque votre OS fait des scans périodiques, ou lorsque vous en forcez un avec nmcli dev wifi rescan / iw dev <iface> scan. Une analyse complète de la bande nécessite le mode moniteur + saut de canal, ce qui est un autre outil.
Est-ce légal ? Observer passivement les trames 802.11 dans les airs autour de vous est légal dans la plupart des juridictions ; votre radio les reçoit déjà, et airtop vous montre simplement ce qui est là. L'interférence active (le panneau deauth détecte les attaques, il ne les exécute pas) est une autre histoire. Si vous êtes sur un réseau d'entreprise, vérifiez votre charte d'utilisation.
En quoi est-ce différent de Kismet, airodump-ng ou Wireshark ? Ces outils font plus avec le mode moniteur : capture complète par trame, export PCAP, déchiffrement. airtop fonctionne sur votre interface normale et vous donne un tableau de bord en un coup d'œil. Pour les tests de pénétration, utilisez airodump-ng. Pour savoir pourquoi votre appel a été interrompu, utilisez celui-ci.
make # génère include/vmlinux.h, construit bin/airtop.bpf.o
make vmlinux # force le rafraîchissement de l'en-tête de type du noyau
make clean
Nécessite clang (cible BPF) et bpftool ; les libbpf / libbpf-dev de votre distribution pour les en-têtes. Les fichiers générés include/vmlinux.h et bin/ sont dans gitignore.
Le GIF est produit avec VHS à partir de assets/airtop.tape :
vhs assets/airtop.tape # -> assets/airtop.gif
Il lance airtop hors caméra pour que le GIF s'ouvre sur le tableau de bord en direct. Lancez des scans Wi-Fi dans un autre terminal pendant l'enregistrement pour remplir le spectre et la liste des PA.
Le programme BPF est sous GPL (SEC("license") = "GPL"), comme l'exigent les helpers du noyau qu'il utilise.
Construit par yeet. yeet est un runtime Linux pour écrire des programmes eBPF et des tableaux de bord système en direct en JavaScript.