
एयरवेव्स के लिए htop — आपके टर्मिनल में एक लाइव 802.11 (Wi-Fi) RF डैशबोर्ड
हवा की लहरों के लिए htop — आपके टर्मिनल में एक लाइव 802.11 (वाई-फाई) RF डैशबोर्ड।
airtop आपके आस-पास के वाई-फाई ट्रैफ़िक को एक लाइव टर्मिनल डैशबोर्ड में बदल देता है — पास के एक्सेस पॉइंट्स का फ़्रीक्वेंसी स्पेक्ट्रम, प्रति-स्टेशन सिग्नल ट्रेस, एक फ्रेम-टाइप गतिविधि फ़ीड, एक RSSI हिस्टोग्राम, और खोजे गए नेटवर्कों की एक स्क्रॉलिंग सूची — eBPF के ऊपर ब्रेल और ब्लॉक ग्राफिक्स से चित्रित।
[!TIP] कोई मॉनिटर मोड नहीं, कोई रॉ सॉकेट नहीं। airtop eBPF प्रोग्रामों को
mac80211/cfg80211से जोड़ता है और 802.11 फ्रेम्स को पढ़ता है जैसे वे कर्नेल के वाई-फाई स्टैक से गुजरते हैं, इसलिए यह आपके सामान्य, कनेक्टेड इंटरफ़ेस पर आपका लिंक गिराए बिना चलता है।
curl -fsSL https://yeet.cx | sh
yeet run https://github.com/yeet-src/airtop
शेयर करने योग्य स्क्रीनशॉट के लिए, SSID और MAC को अनामीकृत करें (आपके नेटवर्क और आपके पड़ोसियों के नेटवर्क network-01, station-02, … के रूप में रिलेबल हो जाते हैं):
yeet run https://github.com/yeet-src/airtop -- --anonymize
Ctrl-C तक चलता है। टर्मिनल का आकार बदलें और लेआउट फिर से प्रवाहित हो जाता है; न्यूनतम 80×24।
पड़ोसी नेटवर्कों को सामने लाने के लिए कर्नेल को स्कैन परिणामों की आवश्यकता होती है। आपका OS अपने आप समय-समय पर स्कैन करता है, या इसे मजबूर करें:
nmcli dev wifi rescan # या: iw dev <iface> scan
वाई-फाई IEEE 802.11 मानकों का परिवार है। मानसिक मॉडल:
सब कुछ एक फ्रेम है। आपका लैपटॉप, फ़ोन और राउटर फ्रेम नामक छोटे रेडियो पैकेटों का आदान-प्रदान करते हैं। हर फ्रेम MAC पते रखता है, और उनमें से एक (BSSID) उस एक्सेस पॉइंट की पहचान करता है जिससे वह संबंधित है।
फ्रेम के तीन वर्ग:
| वर्ग | उदाहरण | उद्देश्य |
|---|---|---|
| प्रबंधन | Beacon, Probe, Auth, Assoc, Deauth | नेटवर्कों का विज्ञापन, जुड़ना और छोड़ना |
| नियंत्रण | ACK, RTS/CTS | समन्वय करना कि किसे बोलने का मौका मिले |
| डेटा | आपका वास्तविक ट्रैफ़िक | पेलोड ले जाना |
एक्सेस पॉइंट बीकन भेजते हैं। एक AP अपने नेटवर्क नाम (SSID) और BSSID को ले जाने वाले बीकन फ्रेम के साथ लगभग 10 बार प्रति सेकंड खुद की घोषणा करता है। इसी तरह आपके फ़ोन की वाई-फाई सूची भरती है, और इसी तरह airtop APs खोजता है।
चैनल और आवृत्ति। वाई-फाई बैंड (2.4 GHz, 5 GHz, 6 GHz) में रहता है, प्रत्येक चैनलों में विभाजित होता है, और हर चैनल MHz में एक केंद्र आवृत्ति है (चैनल 6 ≈ 2437 MHz, चैनल 161 ≈ 5805 MHz)। एक रेडियो एक समय में एक चैनल सुनता है, यही वजह है कि आप ज़्यादातर अपने चैनल पर ट्रैफ़िक देखते हैं।
सिग्नल शक्ति (RSSI) dBm में मापी जाती है। मान हमेशा नकारात्मक होते हैं, और शून्य के जितना करीब, उतना मजबूत:
| RSSI | गुणवत्ता |
|---|---|
| −30 … −50 dBm | उत्कृष्ट (ठीक इसके बगल में) |
| −50 … −67 dBm | अच्छी |
| −67 … −80 dBm | उपयोग योग्य |
| −80 … −90 dBm | कमज़ोर / सीमांत |
ज़्यादातर घरेलू उपयोगकर्ता जो अविश्वसनीय वाई-फाई की समस्या निवारण कर रहे हैं, और नेटवर्क एडमिन जो किसी इवेंट से पहले चैनल चुन रहे हैं।
प्रत्येक पैनल ऊपर दी गई अवधारणाओं से मेल खाता है:
हेडर — अपटाइम, देखे गए कुल फ्रेम्स, लाइव स्टेशन, खोजे गए APs, बीकन गिनती, डीऑथ गिनती (यदि कोई गैर-शून्य है तो लाल), और आपका वर्तमान चैनल। डीऑथ काउंटर पर नज़र रखने वाला वही है; स्वस्थ नेटवर्क में यह शून्य होता है।
फ़्रीक्वेंसी स्पेक्ट्रम — हर खोजा गया AP एक सिग्नल "उभार" के रूप में चित्रित होता है जो MHz अक्ष पर उसकी वास्तविक केंद्र आवृत्ति पर स्थित होता है। ऊंचाई और रंग RSSI दिखाते हैं; लेबल SSID + dBm है। ओवरलैपिंग उभार सह-चैनल भीड़भाड़ को प्रकट करते हैं — क्लासिक वाई-फाई-विश्लेषक दृश्य, और "मेरा वाई-फाई धीमा क्यों है" का उत्तर।
RSSI × समय — प्रत्येक लाइव स्टेशन के लिए एक ब्रेल लाइन ग्राफ जो पिछले कई सेकंडों में उसके सिग्नल को प्लॉट करता है। जब कोई डिवाइस AP से दूर जाती है तो लिंक को फीका होते देखें, या जब कोई अपना लैपटॉप हिलाता है तो उसे उछलते देखें।
फ्रेम फ़ीड — समय के साथ फ्रेम प्रकारों का एक हीटमैप; सेल का रंग = प्रति स्लाइस उस प्रकार के कितने पहुंचे। एक डीऑथ बाढ़ उस पंक्ति को तुरंत रोशन कर देती है, जो वास्तव में आप जिस अलर्ट पैटर्न की उम्मीद करते हैं।
सिग्नल हिस्टोग्राम — RSSI द्वारा प्राप्त फ्रेम्स का वितरण। आपके RF वातावरण का "आकार": −50 dBm के आसपास एक तंग शिखर का मतलब है कि आप एक मजबूत AP के करीब हैं, −60 से −80 तक फैला धब्बा भीड़भाड़ वाले वातावरण का संकेत है।
एक्सेस पॉइंट्स — चैनल, सिग्नल गेज और dBm के साथ खोजे गए SSID, सबसे मजबूत पहले क्रमबद्ध।
एक एकल BPF ऑब्जेक्ट (airtop.bpf.c) दो fentry प्रोग्रामों को जोड़ता है और रिंग बफ़र्स पर यूज़रस्पेस में इवेंट्स स्ट्रीम करता है:
| हुक | यह क्या कैप्चर करता है |
|---|---|
fentry/ieee80211_rx_list | प्राप्त हर 802.11 फ्रेम: प्रकार/उपप्रकार, पते, ieee80211_rx_status से RSSI |
fentry/cfg80211_inform_bss_frame_data | हर AP जो कर्नेल के स्कैन खोजते हैं: SSID, चैनल, सिग्नल |
डैशबोर्ड yeet के V8 रनटाइम में चलता है, उन रिंग बफ़र्स की सदस्यता लेता है और टर्मिनल UI प्रस्तुत करता है:
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] BTF के साथ Linux:
CONFIG_DEBUG_INFO_BTF=yऔरCONFIG_DEBUG_INFO_BTF_MODULES=y। वर्तमान Arch, Fedora, Ubuntu, और Debian 12+ पर डिफ़ॉल्ट। CO-RE का मतलब है प्रति-कर्नेल पुनर्संकलन की आवश्यकता नहीं।
cfg80211/mac80211 स्टैक का उपयोग करने वाला एक वाई-फाई इंटरफ़ेस (Linux पर कोई भी सामान्य वाई-फाई कार्ड)।curl -fsSL https://yeet.cx | sh इसे स्थापित करता है।[!NOTE] airtop क्या नहीं करता:
tx_status हुक है।fentry लक्ष्य व्यवहार में स्थिर हैं लेकिन कर्नेल ABI नहीं हैं; सटीक डेटा आपके वाई-फाई ड्राइवर पर निर्भर करता है।क्या इसके लिए मॉनिटर मोड चाहिए? नहीं। यही पूरी बात है। airtop कर्नेल के वाई-फाई स्टैक को अंदर से हुक करता है, इसलिए यह आपके सामान्य कनेक्टेड इंटरफ़ेस पर काम करता है।
क्या यह मेरा कनेक्शन गिराएगा? नहीं। कोई मोड स्विच नहीं है; आपका इंटरफ़ेस जिससे भी जुड़ा है, उसी से जुड़ा रहता है। airtop वही देख रहा है जो कर्नेल पहले से कर रहा है।
मुझे केवल एक या दो नेटवर्क ही क्यों दिखते हैं?
क्योंकि आपका रेडियो ज़्यादातर समय एक चैनल (अपना) सुन रहा होता है। पड़ोसी नेटवर्क तब दिखाई देते हैं जब आपका OS समय-समय पर स्कैन करता है, या जब आप nmcli dev wifi rescan / iw dev <iface> scan से स्कैन करने पर मजबूर करते हैं। पूरे-बैंड सर्वेक्षण के लिए मॉनिटर मोड + चैनल होपिंग की आवश्यकता होती है, जो एक अलग टूल है।
क्या यह कानूनी है? अपने आस-पास की हवा में 802.11 फ्रेम्स का निष्क्रिय रूप से अवलोकन करना अधिकांश क्षेत्राधिकारों में कानूनी है; आपका रेडियो उन्हें पहले से ही प्राप्त कर रहा है, और airtop आपको केवल वही दिखाता है जो वहाँ है। सक्रिय हस्तक्षेप (डीऑथ पैनल हमलों का पता लगाता है, उन्हें अंजाम नहीं देता) अलग बात है। यदि आप कॉर्पोरेट नेटवर्क पर हैं, तो अपना AUP देखें।
यह Kismet, airodump-ng या Wireshark से कैसे अलग है? वे उपकरण मॉनिटर मोड के साथ अधिक करते हैं: पूर्ण प्रति-फ्रेम कैप्चर, PCAP निर्यात, डिक्रिप्शन। airtop आपके सामान्य इंटरफ़ेस पर चलता है और आपको एक नज़र में देखने वाला डैशबोर्ड देता है। पेन-टेस्टिंग के लिए, airodump-ng का उपयोग करें। यह जानने के लिए कि आपका कॉल क्यों गिरा, इसका उपयोग करें।
make # generates include/vmlinux.h, builds bin/airtop.bpf.o
make vmlinux # force-refresh the kernel type header
make clean
clang (BPF लक्ष्य) और bpftool की आवश्यकता है; हेडर के लिए आपके डिस्ट्रो का libbpf / libbpf-dev। जनरेट किया गया include/vmlinux.h और bin/ gitignored हैं।
GIF VHS के साथ assets/airtop.tape से निर्मित होता है:
vhs assets/airtop.tape # -> assets/airtop.gif
यह airtop को कैमरे के बाहर लॉन्च करता है ताकि GIF लाइव डैशबोर्ड पर खुले। रिकॉर्डिंग करते समय दूसरे शेल में वाई-फाई स्कैन शुरू करें ताकि स्पेक्ट्रम और AP सूची भर जाए।
BPF प्रोग्राम GPL है (SEC("license") = "GPL"), जैसा कि इसके द्वारा उपयोग किए जाने वाले कर्नेल हेल्पर्स के लिए आवश्यक है।
yeet द्वारा निर्मित। yeet JavaScript में eBPF प्रोग्राम और लाइव सिस्टम डैशबोर्ड लिखने के लिए एक Linux रनटाइम है।