時(shí)脈搏:wifit3 packet_stats 包統(tǒng)計(jì)與 AP 識別計(jì)數(shù)邏輯完整指南)
如何看懂無線流量實(shí)時(shí)脈搏wifit3 packet_stats 包統(tǒng)計(jì)與 AP 識別計(jì)數(shù)邏輯完整指南【免費(fèi)下載鏈接】wifit3Wifite but USB-only cross-platform.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/wi/wifit3wifit3是一款跨平臺、僅依賴 USB 網(wǎng)卡的 WiFi 嗅探與審計(jì)工具。它的 wlan 包中的packet_stats模塊負(fù)責(zé)按 AP接入點(diǎn)對 802.11 幀做分類累計(jì)計(jì)數(shù)再驅(qū)動(dòng)界面上的實(shí)時(shí)包速率儀表盤和 AP 識別面板。本文帶你讀懂這套計(jì)數(shù)邏輯6 種幀類別如何分類、累計(jì)值如何變成閃爍的小圖表、以及 AP 身份是如何被識別出來的。一、packet_stats 是什么一張按 AP 記賬的流量記分牌整個(gè)模塊只有一個(gè)文件 packet_stats.py核心是PacketStats類對每個(gè)BSSIDAP 的 MAC 地址維護(hù)一組單調(diào)遞增的累計(jì)計(jì)數(shù)器覆蓋 6 種儀表類別見 packet_stats.py#L8-L22類別含義來源beacon信標(biāo)幀AP 的心跳接收data普通數(shù)據(jù)幀含 QoS 數(shù)據(jù)接收wep_ivWEP 數(shù)據(jù)幀破解 WEP 的原料接收eapol四次握手的 EAPOL 幀接收deauth去認(rèn)證幀環(huán)境中的 我們注入的接收 發(fā)送inject我們注入的其他幀發(fā)送 設(shè)計(jì)取舍探針、關(guān)聯(lián)、管理等幀故意不計(jì)入只為保持面板恰好 6 行一目了然packet_stats.py#L24-L34。接收幀到類別的映射表_RX_CLASS很精巧qos_data并入data現(xiàn)代數(shù)據(jù)幀幾乎都是 QoSwep_data單獨(dú)計(jì)入wep_iv——這樣 WEP 目標(biāo)能看到可用 IV 值的流入速率。二、三個(gè)接口record_rx、record_tx、snapshot計(jì)數(shù)邏輯濃縮為三個(gè)方法packet_stats.py#L47-L64record_rx(bssid, frame_type)— 收到一個(gè)幀時(shí)累加。未登記的幀類型直接忽略no-op不會報(bào)錯(cuò)。record_tx(bssid, is_deauth)— 統(tǒng)計(jì)我們發(fā)送的幀去認(rèn)證幀打到deauth行和環(huán)境里聽到的去認(rèn)證幀匯合在一條線上其余注入幀打到inject行。snapshot(bssid)— 取某 AP 當(dāng)前累計(jì)值。兩個(gè)安全細(xì)節(jié)返回副本調(diào)用方拿到的是拷貝可以放心做差值改不壞內(nèi)部狀態(tài)無副作用查詢一個(gè)從未見過的 BSSID 只返回全零字典不會憑空在登記表里創(chuàng)建條目。單元測試 test_packet_stats.py 逐條驗(yàn)證了這些行為qos_data并入 data、未跟蹤類型不計(jì)數(shù)、快照不注冊未知 BSSID、快照可安全篡改。三、接收計(jì)數(shù)路徑從空中電波到記分牌計(jì)數(shù)并不發(fā)生在網(wǎng)卡層而是在 WlanSink——整個(gè)會話唯一的802.11 全景圖。每張 USB 網(wǎng)卡收到的幀先由 WlanArray跨卡去重再喂給 Sink 的update()幀被解析 → 校驗(yàn) BSSID 有效 → packet_stats.record_rx(bssid, 幀類型) ↓ 再分發(fā)給 beacon / WEP / 客戶端 / EAPOL 各處理器關(guān)鍵守衛(wèi)在 sink.py#L124-L127BSSID 為空、Unknown或廣播地址ff:ff:ff:ff:ff:ff的幀在計(jì)數(shù)前就被丟棄。這條守衛(wèi)保證了記分牌上只出現(xiàn)有身份的 AP是 AP 識別正確性的第一道閘。四、AP 識別BSSID 就是身份packet_stats 以 BSSID 為鍵而 BSSID 正是 wifit3 識別 AP 的主鍵。當(dāng)首個(gè)信標(biāo)到達(dá)時(shí)Sink 在 sink.py#L181-L212 創(chuàng)建一個(gè)AccessPoint對象登記其 SSID、信道、加密方式、WPS 特性等后續(xù)信標(biāo)則刷新信號強(qiáng)度與加密證據(jù)。更進(jìn)一步Sink 會通過同信道 BSSID 漢明距離給相似 BSSID 建立兄弟 AP同型號多網(wǎng)口路由器關(guān)聯(lián)見 sink.py#L409-L434。計(jì)數(shù)與識別共用同一個(gè)鍵空間所以儀表盤的每一行天然對應(yīng)界面上某一個(gè) AP——切換目標(biāo)時(shí)只需換一個(gè) BSSID 參數(shù)。五、儀表盤把累計(jì)值差分成火花線累計(jì)計(jì)數(shù)本身是只升不降的界面靠差值采樣把它變成動(dòng)態(tài)圖形。PacketDashboard 每 0.4 秒執(zhí)行一次_tick調(diào)array.packet_stats.snapshot(bssid)拿當(dāng)前累計(jì)packet_dashboard.py#L90-L96與上一次快照相減得到時(shí)間窗口內(nèi)每類的增量推入 256 長的環(huán)形緩沖渲染成從右往左滾動(dòng)的火花線行尾附上N/s速率。每行顯示什么由目標(biāo)加密方式?jīng)Q定focus_model.py#L74-L83WEP 目標(biāo)顯示wep iv行WPA/WPA2/WPA3 目標(biāo)顯示eapol行。同一份快照還驅(qū)動(dòng)了端點(diǎn) LED閃爍效果screen.py#L626-L637 對比前后快照beacon/data/eapol/wep_iv有增量則路由器燈閃inject/deauth有增量則網(wǎng)卡燈閃——用一次差值同時(shí)喂飽儀表盤和兩個(gè)指示燈。六、發(fā)送計(jì)數(shù)路徑注入幀也要記賬我們主動(dòng)發(fā)出的幀同樣入賬。Sink 的record_tx()sink.py#L502-L515先把自己發(fā)出的字節(jié)重新解析一遍 802.11 幀頭讀出 BSSID 和幀類型是去認(rèn)證幀就走deauth計(jì)數(shù)否則走inject計(jì)數(shù)。整個(gè)過程是 best-effort解析失敗就靜默跳過絕不影響攻擊主流程。測試 test_sink.py 專門覆蓋了喂垃圾字節(jié)也不拋異常這一條。七、值得記住的設(shè)計(jì)細(xì)節(jié)單調(diào)累計(jì) 讀取差值計(jì)數(shù)器只增不減速率由 UI 側(cè)求差得到邏輯簡單且天然防競態(tài)快照即值對象返回副本、無副作用是并發(fā)環(huán)境網(wǎng)卡線程寫、UI 線程讀里最省心的讀取方式分類收斂RX 只記 6 類、TX 只分 2 類信息密度剛好夠人眼盯盤與 AP 注冊表解耦snapshot不建條目、record_rx對陌生幀寬容統(tǒng)計(jì)永遠(yuǎn)不會污染AP 識別數(shù)據(jù)。八、相關(guān)文件導(dǎo)航文件職責(zé)packet_stats.py計(jì)數(shù)器本體6 類累計(jì)、快照sink.pyRX 計(jì)數(shù)入口 AP 注冊/識別 TX 分類array.py跨卡去重并暴露packet_stats屬性packet_dashboard.py快照差分 → 火花線儀表盤focus_model.py按加密族決定顯示哪些行test_packet_stats.py / test_sink.py計(jì)數(shù)與接線行為的回歸測試?yán)斫饬诉@個(gè)記賬器你就掌握了 wifit3 實(shí)時(shí)界面的數(shù)據(jù)源頭所有閃爍的條、跳動(dòng)的速率和閃動(dòng)的燈都是這張記分牌的不同投影?!久赓M(fèi)下載鏈接】wifit3Wifite but USB-only cross-platform.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/wi/wifit3創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考