ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

同一个Beacon为何只该计数一次:wifit3 WiFi审计工具wlan去重模块完全解析

同一个Beacon为何只该计数一次:wifit3 WiFi审计工具wlan去重模块完全解析 同一个Beacon为何只该计数一次wifit3 WiFi审计工具wlan去重模块完全解析【免费下载链接】wifit3Wifite but USB-only cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3wifit3 是一款跨平台Linux / Windows / macOS的 USB WiFi 审计与嗅探工具核心能力之一是多网卡聚合抓包同时挂载多张 USB 无线网卡监听空口流量。而多张网卡听同一个 Beacon 帧直接带来的问题就是——同一个空口传输被重复计数统计虚高、客户端包数翻倍、握手证据重复入库。wifit3 的wlan去重模块StreamMerger就是解决这件事的让每一次空口传输恰好只被计数一次。问题两张网卡一个Beacon两次数当两张监听卡调到同一信道时它们收到的几乎是同一批空口帧。如果不去重AP 的beacons计数翻倍每帧一次的语义被破坏客户端的packets计数虚高掩盖真实活跃度数据包面板beacon / data / eapol 速率曲线整体失真。wifit3 在 wlan/array.py 的WlanArray中把每张卡片的 RX 流汇入同一个去重器再交给共享的 802.11 状态机WlanSink见 wlan/sink.py。单卡时去重是空操作零开销直通。去重原理一个与FCS和驱动无关的帧指纹去重的关键在 wlan/dedupe.py 的key()方法——它取帧头的 4 段拼成唯一指纹指纹组成帧内偏移作用Frame Control[0:2]含 Retry 位区分重传Addr1 / Addr2 / Addr3[4:22]三个 MAC 地址同一传输必然相同Sequence Control[22:24]序列号区分后续新帧这个设计刻意避开了两个陷阱不比较 FCS / 驱动附加的头部两张不同芯片的网卡收到的同一帧驱动封装和 FCS 可能略有差异但它们的天线听到的空口字节地址序列号完全一致所以指纹天然跨卡片可比。不比较 Duration 字段该字段是逐接收者填充的两台监听者算出的值可以不同。测试 test_dedupe.py 专门验证了 Duration 差异不影响合并。三条精确的边界规则指纹不是越粗越好wifit3 的去重边界划得相当精确重传不算重复802.11 重传会翻转 Frame Control 中的 Retry 位指纹因此变化重传帧被当作独立帧放行dedupe.py。序列号递增不算重复同 AP 下一帧新 Beacon 的 seq_ctrl 步进指纹不同不会被误吞。0.3 秒时间窗指纹只在window默认 0.3s内有效。序列号是有限位宽、会绕回复用的隔了一段时间后同号的帧必然是新传输必须放行test_dedupe.py。去重的副产物每张卡的信号都不浪费被判定为跨卡重复的帧虽然不再更新 AP/客户端画像但它的 RSSI 并没有被丢弃array.py 的_ingest对每张第一个听到该帧的卡调用record_signal把信号记入signal_by_card。也就是说画像字段beacon 内容、IE、客户端、握手只算一次天线强度每张卡各记各的。后续 Power 读数可以取信号最强的那张天线——这正是多卡聚合严格强于单卡的地方一张卡天线盲区漏掉的帧往往被另一张卡接住。StreamMerger还顺带统计覆盖率指标both被 ≥2 张卡听到的帧数即单卡方案会丢失的部分、only仅某张卡独听到的帧数见 dedupe.py。支持热插拔卡片随时来去真实使用中 USB 网卡会中途接入或拔出。去重器以**卡名字符串键**动态管理来源接入时add_source注册计数幂等拔出时remove_source抹掉其计数并从所有窗口内的指纹中移除该卡避免后续统计把已离开的卡误判为仍在场dedupe.py。单卡场景下这一切都是无感的只有聚合多卡时去重器才真正开始工作。快速上手用测试理解行为去重模块是完全无硬件依赖的显式时间戳驱动tests/wlan/test_dedupe.py 就是一组行为规格书值得逐条看跨卡副本在窗口内被抑制novel1, dup1, both1窗口外同指纹帧重新算新帧序列号复用保护Retry 位 / 序列号步进 → 各自成帧三卡同听同一帧both只加一次。运行方式uv sync uv run pytest tests/wlan/test_dedupe.py相关文件导航文件说明wlan/dedupe.pyStreamMerger去重器本体指纹、时间窗、覆盖率统计wlan/array.py卡池WlanArrayRX 汇入去重、按卡记录信号、热插拔wlan/sink.pyWlanSink去重后的 802.11 画像AP/客户端/握手wlan/packet_stats.py数据包面板计数器只统计去重后的 RXtests/wlan/test_dedupe.py去重行为的完整测试README.md多卡聚合等特性总览小结多网卡 WiFi 嗅探的正确姿势不是把流量简单相加而是先按空口传输粒度去重。wifit3 用帧控制 三地址 序列号 时间窗这一把与硬件无关的尺子保证了同一个 Beacon 只被计数一次同时把每张卡的信号优势都保留下来。【免费下载链接】wifit3Wifite but USB-only cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表