
htop für die Funkwellen – ein Live-802.11-(Wi-Fi)-RF-Dashboard im Terminal
htop für die Funkwellen — ein Live-802.11 (Wi-Fi)-HF-Dashboard in Ihrem Terminal.
airtop verwandelt den Wi-Fi-Verkehr um Sie herum in ein Live-Terminal-Dashboard — ein Frequenzspektrum nahegelegener Zugangspunkte, Signalverläufe pro Station, einen Aktivitätsfeed nach Frametypen, ein RSSI-Histogramm und eine rollierende Liste entdeckter Netzwerke — gezeichnet mit Braille- und Blockgrafik über eBPF.
[!TIP] Kein Monitormodus, keine Raw-Sockets. airtop bindet eBPF-Programme an
mac80211/cfg80211und liest 802.11-Frames, während sie durch den Wi-Fi-Stack des Kernels fließen, sodass es auf Ihrem normalen, verbundenen Interface läuft, ohne Ihre Verbindung zu trennen.
curl -fsSL https://yeet.cx | sh
yeet run https://github.com/yeet-src/airtop
Für einen teilbaren Screenshot anonymisieren Sie SSIDs und MACs (Ihr Netzwerk und das Ihrer Nachbarn werden zu network-01, station-02, … umbenannt):
yeet run https://github.com/yeet-src/airtop -- --anonymize
Läuft bis Ctrl-C. Ändern Sie die Terminalgröße, und das Layout passt sich an; mindestens 80×24.
Um benachbarte Netzwerke sichtbar zu machen, benötigt der Kernel Scan-Ergebnisse. Ihr Betriebssystem scannt regelmäßig von selbst, oder Sie erzwingen einen Scan:
nmcli dev wifi rescan # or: iw dev <iface> scan
Wi-Fi ist die Familie der IEEE 802.11-Standards. Das mentale Modell:
Alles ist ein Frame. Ihr Laptop, Ihr Telefon und Ihr Router tauschen kurze Funkpakete aus, die Frames genannt werden. Jeder Frame trägt MAC-Adressen, und eine davon (die BSSID) identifiziert den Access Point, zu dem er gehört.
Drei Frameklassen:
| Klasse | Beispiele | Zweck |
|---|---|---|
| Management | Beacon, Probe, Auth, Assoc, Deauth | Netzwerke ankündigen, beitreten und verlassen |
| Steuerung | ACK, RTS/CTS | koordinieren, wer senden darf |
| Daten | Ihr tatsächlicher Verkehr |
Access Points senden Beacons. Ein AP kündigt sich etwa zehnmal pro Sekunde mit einem Beacon-Frame an, der seinen Netzwerknamen (SSID) und BSSID trägt. So wird die Wi-Fi-Liste Ihres Telefons gefüllt, und so entdeckt airtop APs.
Kanäle und Frequenz. Wi-Fi lebt in Bändern (2,4 GHz, 5 GHz, 6 GHz), die jeweils in Kanäle unterteilt sind, und jeder Kanal hat eine Mittenfrequenz in MHz (Kanal 6 ≈ 2437 MHz, Kanal 161 ≈ 5805 MHz). Ein Funkgerät hört jeweils nur einen Kanal, weshalb Sie meist nur Verkehr auf Ihrem Kanal sehen.
Signalstärke (RSSI) wird in dBm gemessen. Die Werte sind immer negativ, und je näher an null, desto stärker:
| RSSI | Qualität |
|---|---|
| −30 … −50 dBm | hervorragend (direkt daneben) |
| −50 … −67 dBm | gut |
| −67 … −80 dBm | brauchbar |
| −80 … −90 dBm | schwach / grenzwertig |
Hauptsächlich Heimanwender, die wackeliges Wi-Fi debuggen, und Netzwerkadministratoren, die vor einem Event Kanäle auswählen.
Kopfzeile — Betriebszeit, insgesamt gesehene Frames, aktive Stationen, entdeckte APs, Beacon-Anzahl, Deauth-Anzahl (rot, wenn ungleich null), und Ihr aktueller Kanal. Der Deauth-Zähler ist der, den Sie im Auge behalten sollten; gesunde Netzwerke haben null.
Frequenzspektrum — jeder entdeckte AP wird als Signal-"Hügel" dargestellt, positioniert auf seiner tatsächlichen Mittenfrequenz auf einer MHz-Achse. Höhe und Farbe zeigen RSSI; die Beschriftung ist SSID + dBm. Überlappende Hügel zeigen Gleichkanalüberlastung — die klassische Wi-Fi-Analyseansicht und die Antwort auf "Warum ist mein Wi-Fi langsam?"
RSSI × Zeit — ein Braille-Liniendiagramm pro aktiver Station, das deren Signal über die letzten Sekunden aufzeichnet. Beobachten Sie, wie eine Verbindung nachlässt, wenn sich ein Gerät vom AP entfernt, oder springt, wenn jemand seinen Laptop bewegt.
Frame-Feed — eine Heatmap der Frametypen über die Zeit; Zellenfarbe = wie viele dieses Typs pro Zeitscheibe eingetroffen sind. Eine Deauth-Flut leuchtet diese Zeile sofort auf, das ist das Alarmmuster, das Sie wirklich wollen.
Signalhistogramm — Verteilung der empfangenen Frames nach RSSI. Die "Form" Ihrer HF-Umgebung: ein enger Peak um −50 dBm bedeutet, Sie sind nah an einem starken AP; eine Verteilung über −60 bis −80 bedeutet eine überfüllte Umgebung.
Access Points — entdeckte SSIDs mit Kanal, Signalanzeige und dBm, sortiert nach Stärke.
Ein einzelnes BPF-Objekt (airtop.bpf.c) hängt zwei fentry-Programme an und streamt Ereignisse über Ringpuffer in den Userspace:
| Hook | Was es erfasst |
|---|---|
fentry/ieee80211_rx_list | jeder empfangene 802.11-Frame: Typ/Subtyp, Adressen, RSSI aus ieee80211_rx_status |
fentry/cfg80211_inform_bss_frame_data | jeder AP, den die Scans des Kernels entdecken: SSID, Kanal, Signal |
Das Dashboard läuft in der V8-Laufzeit von yeet, abonniert diese Ringpuffer und rendert die Terminal-Benutzeroberfläche:
main.js entry: tty size, render loop, BPF bind/subscribe
state.js live data + frame/scan ingest
render.js ANSI, color ramps, braille canvas/charts (pure)
dashboard.js panels + layout (renderDashboard)
[!IMPORTANT] Linux mit BTF:
CONFIG_DEBUG_INFO_BTF=yundCONFIG_DEBUG_INFO_BTF_MODULES=y. Standard auf aktuellen Arch, Fedora, Ubuntu und Debian 12+. CO-RE bedeutet keine Neukompilierung pro Kernel.
cfg80211/mac80211-Stack (jede normale Wi-Fi-Karte unter Linux).curl -fsSL https://yeet.cx | sh installiert ihn.[!NOTE] Was airtop nicht kann:
tx_status-Hook.fentry-Ziele sind in der Praxis stabil, aber keine Kernel-ABI; die genauen Daten hängen von Ihrem Wi-Fi-Treiber ab.Benötigt dies den Monitormodus? Nein. Das ist der ganze Punkt. airtop greift von innen in den Wi-Fi-Stack des Kernels ein, also funktioniert es auf Ihrem normalen verbundenen Interface.
Wird es meine Verbindung trennen? Nein. Es gibt keinen Moduswechsel; Ihr Interface bleibt mit dem assoziiert, womit es assoziiert ist. airtop beobachtet, was der Kernel bereits tut.
Warum sehe ich nur ein oder zwei Netzwerke?
Weil Ihr Funkgerät die meiste Zeit nur einen Kanal (seinen eigenen) hört. Benachbarte Netzwerke erscheinen, wenn Ihr Betriebssystem regelmäßige Scans durchführt oder wenn Sie einen mit nmcli dev wifi rescan / iw dev <iface> scan erzwingen. Eine Vollband-Untersuchung benötigt Monitormodus + Kanalwechsel, was ein anderes Tool ist.
Ist das legal? Das passive Beobachten von 802.11-Frames in der Luft um Sie herum ist in den meisten Rechtsordnungen legal; Ihr Funkgerät empfängt sie bereits, und airtop zeigt Ihnen nur, was vorhanden ist. Aktive Störung (das Deauth-Panel erkennt Angriffe, es führt sie nicht aus) ist eine andere Sache. Wenn Sie sich in einem Unternehmensnetzwerk befinden, prüfen Sie Ihre AUP.
Wie unterscheidet sich das von Kismet, airodump-ng oder Wireshark? Diese Tools machen mehr mit dem Monitormodus: vollständige Pro-Frame-Erfassung, PCAP-Export, Entschlüsselung. airtop läuft auf Ihrem normalen Interface und gibt Ihnen ein Dashboard auf einen Blick. Für Penetrationstests verwenden Sie airodump-ng. Um herauszufinden, warum Ihr Anruf abgebrochen ist, verwenden Sie dies.
make # generates include/vmlinux.h, builds bin/airtop.bpf.o
make vmlinux # force-refresh the kernel type header
make clean
Benötigt clang (BPF-Ziel) und bpftool; die libbpf / libbpf-dev Ihrer Distribution für Header. Die generierten include/vmlinux.h und bin/ werden von git ignoriert.
Das GIF wird mit VHS aus assets/airtop.tape erstellt:
vhs assets/airtop.tape # -> assets/airtop.gif
Es startet airtop außerhalb des Bildschirms, sodass das GIF auf dem Live-Dashboard öffnet. Starten Sie während der Aufnahme in einer anderen Shell Wi-Fi-Scans, um das Spektrum und die AP-Liste zu füllen.
Das BPF-Programm ist GPL (SEC("license") = "GPL"), wie von den verwendeten Kernel-Helfern gefordert.
Erstellt von yeet. yeet ist eine Linux-Laufzeitumgebung zum Schreiben von eBPF-Programmen und Live-System-Dashboards in JavaScript.
| Nutzlasten transportieren |