wifit3 PMKID采集完整教程:主动关联与被动嗅探两种模式的区别
【免费下载链接】wifit3Wifite but USB-only & cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3
wifit3 是一款纯 Python 实现的跨平台 Wi-Fi 审计工具,只依赖 USB 无线网卡即可在 Linux、Windows 和 macOS 上完成PMKID 采集。本教程讲清楚它的两种采集模式——被动嗅探与主动关联——各自的原理、适用场景和操作步骤,帮助你用最少的动作拿到可离线破解的WPA*01哈希。
什么是 PMKID,为什么值得采集?
PMKID 是 WPA/WPA2 网络在 EAPOL M1 消息中附带的一段 16 字节密钥摘要(Key Derivation Element)。与需要"踢下线客户端"才能拿到的四次握手不同,PMKID 只需要 AP 自己吐一次 M1 即可获取,因此:
- 不依赖客户端活动:没有在线设备也能尝试采集;
- 直接离线破解:配合 SSID 用 hashcat
-m 22000破解,无需重放攻击; - 风险更低:被动模式下不发送任何一帧,网络里完全无感知。
wifit3 把这两种策略做进了同一个界面:聚焦目标 AP 后,日志区默认处于被动监听,点击PMKID按钮则切换为主动关联攻击。核心实现分别在 pmkid.py(主动攻击)与 parser.py(被动解析 M1 中的 PMKID KDE)。
快速开始:准备硬件与启动 wifit3
硬件要求:至少一块支持的 USB 无线网卡(如 ALFA AWUS036ACS、TP-Link Archer T4U v3、Netgear A9000 等),完整清单见 SUPPORTED-HARDWARE.md。
三种启动方式:
- 预编译二进制(推荐):下载对应平台的单文件可执行,Windows 直接运行,Linux/macOS 加执行权限后启动;
- 源码运行:
uv sync && uv run wifit3; - 自行打包:
uv run pyinstaller wifit3.spec --noconfirm --clean。
一次性驱动配置:插入网卡、在启动界面点START,wifit3 会自动接管硬件——Linux 通过pkexec写入 udev 权限,Windows 通过 UAC 安装 WinUSB,全程在应用内完成,无需折腾内核驱动。
被动嗅探模式:静默监听 PMKID
选中目标进入聚焦界面后,wifit3 默认就是被动监听状态,日志显示:
Passively Listening for ├─ Crackable 4-Way Handshakes └─ Crackable PMKIDs它的原理:网卡监听目标信道上的所有 EAPOL 帧,解析器一旦发现某条 M1 携带了非全零的 PMKID KDE,且该 AP 使用 PSK(可离线破解),立即去重入库并落盘为.hc22000文件,日志出现✓ PMKID captured。
特点:
- ✅ 零注入、零解关联,行为上等同于一台普通接收设备;
- ✅ 长期挂后台即可,任何客户端重连都会送来 M1;
- ⏳ 缺点:完全看运气,AP 不广播 PMKID 或长时间无人重连就采不到。
主动关联模式:伪造客户端触发 M1
被动等了很久没结果?按p或点击PMKID按钮启动主动关联攻击。wifit3 会伪造一个随机客户端 MAC,按 pmkid.py 中定义的四步序列执行:
- 注入 Auth Req(开放系统认证,seq=1);
- 等待 AP 的 Auth Resp,确认它愿意响应;
- 注入 Assoc Req,RSN IE 中强制 PSK AKM;
- 等待 AP 回发 EAPOL M1——一旦到达立即发 3 帧解关联"离场",把 AP 从重传状态中释放;若 AP 始终沉默则轮换 MAC 重试(默认 3 轮)。
特点:
- ✅ 成功率远高于被动,多数发送 PMKID KDE 的 WPA2-PSK AP 几秒内得手;
- ⚠️ 会向目标 AP 发送注入帧,AP 日志中可见陌生 MAC 的认证尝试,仅限对自己拥有或已获授权的网络使用。
两种模式怎么选?一张表看懂
| 对比项 | 被动嗅探 | 主动关联 |
|---|---|---|
| 是否发送帧 | 否 | 是(Auth + Assoc + Deauth) |
| 是否依赖客户端活动 | 是 | 否 |
| 速度 | 不确定,可能数小时 | 通常几秒到十几秒 |
| 隐蔽性 | 完全无感 | AP 侧可见异常认证 |
| 适用场景 | 长时间驻点、高安全敏感环境 | 自有网络、授权渗透测试 |
推荐策略:先进入被动监听挂 10~30 分钟;确认目标长期无客户端活动且你已获授权,再切主动模式收尾。
采集到的 PMKID 如何离线破解
成功采集后,文件自动保存到captures/目录,扩展名为.hc22000,行格式为WPA*01*<pmkid十六进制>*<AP MAC>*<STA MAC>*<SSID十六进制>,由 hc22000_format.py 生成。喂给 hashcat 即可:
hashcat -m 22000 captures/xxx_pmkid.hc22000 rockyou.txt同一 AP 的 PMKID 会按(BSSID, 客户端MAC)去重,重复采集不会产生垃圾数据(去重逻辑见 capture_events.py)。
采集失败?对照这 4 种原因
界面日志(渲染逻辑见 pmkid_log.py)会明确给出失败原因:
| 日志提示 | 含义 | 建议 |
|---|---|---|
| PMF Required | AP 强制 802.11w 保护管理帧 | 无法采集,跳过 |
| No PSK AKM | AP 只提供 SAE(WPA3-only)等 | 换用 EvilTwin 降级或握手采集 |
| No PMKID in M1 | AP 回 M1 但不带 PMKID KDE | 该 AP 不暴露,改被动或握手 |
| M1 not received | AP 对 Auth/Assoc 无响应 | 已自动轮换 MAC 重试 3 轮,仍失败则放弃 |
另外,隐藏 SSID 的 AP 无法走主动模式(无法关联),界面上该按钮会置灰并提示原因。
写在最后
wifit3 的 PMKID 功能把"被动监听 + 主动关联"收敛在一个聚焦界面里:被动模式是零副作用的守株待兔,主动模式是伪造客户端的定向收割,采集结果统一落盘为可直接进 hashcat 的.hc22000文件。请记住工具只服务于授权测试——wifit3 绕过操作系统 Wi-Fi 栈直接操作 USB 寄存器,权限越大,责任越大。
【免费下载链接】wifit3Wifite but USB-only & cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考