☰
wifit3 802.11帧解析器实战:解析Beacon、数据帧与EAPOL完整指南
2026/10/5 8:56:02 网站建设 项目流程

wifit3 802.11帧解析器实战:解析Beacon、数据帧与EAPOL完整指南

【免费下载链接】wifit3Wifite but USB-only & cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3

wifit3 是一款跨平台的 USB 无线审计工具(Wifite 的 USB-only 版本),其核心是一个纯 Python 编写的802.11 帧解析器。它不依赖操作系统内核驱动,直接通过 USB 收发原始 MPDU,再由WlanFrameParser把每一帧字节解析成有类型的数据包:从Beacon 帧中提取 SSID、加密套件与信道,从数据帧中识别 WEP IV 与 EAPOL 载荷,再对EAPOL 四路握手逐帧分类(M1~M4),最终产出可离线破解的 hc22000 哈希行。本文带你从零看懂这个 WiFi 帧解析器的设计思路与实战价值。

一、wifit3 是什么:跨平台 USB 无线审计工具

wifit3 面向 Linux / Windows / macOS 三大平台,采用纯 Python 实现,零运行时依赖(无需 aircrack-ng、reaver)。它内置一套"迷你驱动",绕过 NDIS 与内核驱动锁,在用户态直接操控 USB 无线网卡完成监听与注入。

上图是 wifit3 的扫描器:表格里每一行的BSSID / 信道 / 加密(WPA2-PSK) / WPS信息,全部来自对 Beacon 帧的实时 802.11 帧解析——这正是本文要拆解的核心模块。

二、帧解析器工作原理:三步流水线

解析入口是 WlanFrameParser 的parse_80211_frame方法:输入是原始 MPDU 字节 + RSSI,输出是类型化的Packet对象,无法解析时返回None。整个流程分三步:

第 1 步:结构校验(噪声过滤)

_is_valid_frame先做廉价的"这像不像一帧 Wi-Fi 数据"检查:

  • 长度 ≥ 24 字节、协议版本必须为 0;
  • 管理帧强制SSID IE 必须第一个出现(tag 0),且后接速率 IE(tag 1),防止硬件噪声/CRC 泄漏被误认成 SSID;
  • 数据帧检查地址字段,过滤全零/广播等异常源地址。

第 2 步:帧类型分发

读取帧控制字的前两个字节,拆出帧类型与子类型,并依据 ToDS/FromDS 位确定地址语义(源/目的/BSSID),再分发到管理帧或数据帧分支。四类帧类型的解析去向如下:

帧类型子类型示例输出数据包用途
管理帧(0)Beacon、Probe RespBeaconPacketSSID / 加密 / 信道
管理帧(0)Assoc Req、Auth、DeauthAssocRequestPacket等识别客户端与协商 AKM
数据帧(2)WEP 保护帧WepDataPacket提取 IV + 密文
数据帧(2)携带 EAPOLEapolPacket四路握手分析

第 3 步:构建类型化 Packet

每种帧对应 src/wifit3/dot11/packet.py 中的一个 dataclass,携带该帧独有的字段(如 Beacon 的channel、EAPOL 的msg_num),供上层 UI 与破解引擎消费。

三、Beacon 解析:SSID、加密套件与信道是怎么识别的

Beacon 帧是 WiFi 侦察的"广播名片"。解析器从第 36 字节开始遍历信息元素(IE)(遍历器位于 iter_information_elements),关注的关键 tag:

IE Tag名称wifit3 提取的信息
0SSID网络名称(空长度标记为<hidden>)
3 / 61 / 192DS Param / HT Op / VHT Op信道号(2.4G 与 5G 优先级回退)
48RSN IE加密套件、AKM 列表、PMF 能力
127Extended CapabilitiesBeacon 保护位(WPA3 相关)
221Vendor SpecificWPS 信息(锁定状态、配置方法、厂商型号)

其中最复杂的是RSN IE 解析(_parse_rsn_ie):它按 IEEE 802.11-2020 §9.4.2.24 拆出分组/单播加密套件与 AKM 套件,最终生成 airodump 风格的加密标签,例如WPA2-PSK-CCMP、WPA3-SAE-CCMP、WPA2/WPA3-PSK+SAE-CCMP(过渡模式)。同时解析器会原样保存rsn_ie_raw字节,供后续 PMKID 采集回显 AP 的 RSN 配置。

上图聚焦面板顶部的Encryption: WPA2 (PSK-CCMP)与底部日志中的 M1~M4 逐帧标记,正是 Beacon 解析(AKM 套件)与 EAPOL 解析(握手消息)两大能力的直接体现。

四、数据帧解析:从保护帧中识别 WEP IV

数据帧的解析(_parse_data)先计算真实头部长度:QoS 控制字段 +2 字节、HT Control 字段 +4 字节。随后检查Protected 位:

  • 若保护位为 1,读取 IV 后的 Key ID 字节:ExtIV 位(0x20)清零说明是WEP帧 → 输出WepDataPacket,携带 3 字节 IV、keyid 和前 16 字节密文(PTW 密钥恢复的原料);
  • ExtIV 位已置位则是 TKIP/CCMP 密文,直接按普通数据帧处理;
  • 明文帧则在头部之后滑动窗口查找LLC/SNAP + 0x888E(EAPOL)签名,命中即进入 EAPOL 分支。

这个"先看保护位、再找 EAPOL 签名"的顺序,让同一个入口既能喂 WEP 攻击套件,又能驱动握手捕获。

五、EAPOL 解析:四路握手 M1~M4 如何分类

EAPOL 载荷的定位依赖常量 LLC_SNAP_EAPOL(AA AA 03 00 00 00 88 8E)。找到后,解析器按 802.1X 布局提取 Key Info、Replay Counter(8B)、Nonce(32B)、MIC(16B,位于偏移 81)与 Key Data。

消息分类由 _classify_eapol_msg 完成,只靠三个 Key Info 位 + Key Data 长度即可四选一:

消息ACKMICINSTALLKey Data特征
M1✅❌❌可含 PMKID KDEAP 发起,携带 ANonce
M2❌✅❌含客户端 RSN IE核心帧:SNonce + MIC
M3✅✅✅空AP 确认安装密钥
M4❌✅❌空客户端确认(常清零 nonce)

分类之外的两个亮点:

  1. PMKID 提取:M1 的 Key Data 中若含 PMKID KDE(OUI00:0F:AC+ 类型 0x04),解析器直接抠出 16 字节 PMKID——无需握手即可产出可破解材料;
  2. payload 原样保存:解析时就切出完整的 802.1X 切片(99 + key_data_len 字节),这正是 hashcat-m 22000需要的嵌入数据,避免保存 pcap 时二次定位。

六、从帧到哈希行:解析结果的下游价值

解析出的EapolPacket进入 src/wifit3/crack/handshake.py 的配对引擎:用 Replay Counter 关联 M1/M3(ANonce 供体)与 M2/M4(MIC 骨架帧),判定是否构成hashcat 可破解对,再生成WPA*02*…哈希行导出为.hc22000文件(见 hc22000_line)。同时引擎会检查 AKM 套件——SAE/EAP/OWE 等无口令路径的捕获会被明确标记为"不可破解",绝不虚报成功。

七、如何运行 wifit3 实战体验

git clone https://gitcode.com/GitHub_Trending/wi/wifit3 cd wifit3 uv sync uv run wifit3

插入一张受支持的 USB 网卡,在启动界面选卡并点击START(首次运行需授权系统级设备权限),即可看到本文所述的全部解析能力:实时 Beacon 扫描、EAPOL 握手捕获与 PMKID 收割。

八、延伸阅读:测试即文档

想深入源码?这份测试文件是"活的规格说明书",覆盖了 Beacon 构建、RSN/WPS 解析、信道回退、WEP IV 偏移等全部边界场景:

  • tests/wlan/test_parser.py —— 帧解析器核心测试
  • src/wifit3/dot11/parser.py ——WlanFrameParser主实现
  • src/wifit3/dot11/packet.py —— 类型化 Packet 家族
  • src/wifit3/dot11/eapol.py —— EAPOL-Key 组装与常量
  • src/wifit3/crack/handshake.py —— 握手配对与 hc22000 生成

总结:wifit3 的 802.11 帧解析器用"校验 → 分发 → 类型化"三步流水线,把裸字节变成侦察与破解引擎可直接消费的结构化数据。理解 Beacon 的 IE 遍历、数据帧的保护位判断和 EAPOL 的 M1~M4 分类,你不仅会用这个 WiFi 审计工具,更能看懂无线握手协议的全貌——这对任何想入门 802.11 协议的人来说,都是绝佳的实践教材。

【免费下载链接】wifit3Wifite but USB-only & cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询