如何免 aircrack-ng 破解 WEP 密钥?wifit3 纯Python PTW 算法全解析
【免费下载链接】wifit3Wifite but USB-only & cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3
wifit3 是一款跨平台的 Wifite 替代工具,纯 Python 实现 WEP 密钥恢复:内置 PTW 算法与 FMS/KoreK 回退机制,无需 aircrack-ng 或 reaver,插入 USB 无线网卡即可在 Linux、macOS、Windows 上直接抓包破解 WEP。
一、wifit3 是什么:纯 Python 的 Wifite
传统 Wifite 依赖aircrack-ng等外部 C 程序,wifit3 的思路完全不同:
- 零运行时依赖:不 shell out 任何外部破解器,RC4、PTW 投票、候选搜索全部是 Python 原生代码
- 自带无线栈:内置 Linux 内核驱动的 Python 移植版(mini-driver),直接在 USB 层完成注入与监听模式,绕开 Windows NDIS 和内核驱动锁
- 跨平台一致:同一份代码在三大系统表现一致,支持 20 多款 USB 网卡芯片
WEP 攻击套件位于 src/wifit3/campaigns/wep/,包含 Fake Auth、ARP Replay、ChopChop 等模块,而本文的主角——纯 Python 的 PTW 破解器——实现在 src/wifit3/crack/wep.py 中。
二、为什么 WEP 能被"投票"破解?
先建立 30 秒能懂的心智模型:
- WEP 用 RC4 流加密,每包的密钥是
IV(3字节,公开) ‖ 根密钥 - 因为 IV 公开,RC4 KSA 的前 3 步对任何人都可复算
- Klein 相关性:利用前 3 步的已知状态,可以让每包的前若干字节"泄露"根密钥字节的累加和
- 于是每个数据帧都能为若干"密钥字节之和"投出一票——IV 足够多时,正确的和会以压倒性票数胜出
关键巧合:ARP 请求包的前 16 字节明文是固定的(LLC/SNAP 头 + ARP 头),wifit3 在 src/wifit3/crack/wep.py 硬编码了这份已知明文ARP_REQUEST_PLAINTEXT,密文 XOR 已知明文就得到流密码字节——这正是 ARP 重放攻击疯狂制造的东西。
三、数据流水线:从抓包到出密钥
整个 WEP 恢复流程是一条自动化的流水线,各环节分工清晰:
| 环节 | 实现位置 | 作用 |
|---|---|---|
| IV 收集与去重 | src/wifit3/wlan/wep_store.py | 统计唯一 IV,驱动界面"距 10k 的 ETA"倒计时 |
| 伪造认证 | src/wifit3/campaigns/wep/fake_auth.py | 以伪造客户端身份关联,让 AP 接受注入 |
| ARP 重放 | src/wifit3/campaigns/wep/arp_replay.py | IV 生成引擎:每回显一次就多一个新鲜 IV |
| ChopChop 回退 | src/wifit3/campaigns/wep/chopchop.py | 无客户端流量时逐字节伪造出 ARP 种子 |
| PTW 破解 | src/wifit3/crack/wep.py | 核心投票算法,流式喂入(IV, keystream)样本 |
| 活动编排 | src/wifit3/campaigns/wep/campaign.py | 持有破解器实例,在多进程中执行密钥搜索 |
阈值设计:40-bit(5 字节)密钥通常约 4 万个 IV 即可恢复;104-bit(13 字节)需要约 4–8.5 万个唯一 IV,所以 wep_store.py 把WEP_CRACK_IV_THRESHOLD = 10_000作为"开始值得尝试"的门槛,破解器在 IV 持续到达的过程中增量投票、随叫随跑。
四、PTW 算法核心:投票 + 优先搜索
PtwCracker 类是整个模块的灵魂,工作分三步:
1️⃣ 逐包投票(feed)对每个样本,先复算 RC4 KSA 的前 3 步(_ksa_first3),算出逆置换表Sinv。随后对每个根密钥字节位置i,用 Klein/PTW 公式估计该位置的根密钥累加和σ,并在 256 格的投票表上+1。由于投的是IV 无关的和,不同 IV 的票可以安全累加。
2️⃣ 候选搜索(recover/_search)按票数对每个字节位置排序,用最佳优先策略探索组合空间:先试全 argmax 键,再试"单字节偏一位"的键,如此递进。_DEPTH_CAP = 16和_MAX_TRIALS = 100_000两个上限保证 IV 不够多时的搜索快速失败,而不是空转。
3️⃣ 留存验证(_verify_key)每个候选键拿 8 个留存样本用rc4_keystream(iv + key, ...)重推流密码比对。允许 1 个"脏样本"(ARP 尺寸但并非真正 ARP 请求的怪异帧)——这一容错设计让正确密钥不会因为一个坏样本被永久拒之门外,同时错误键会在前 2 个样本就快速出局,把暴力搜索的单候选成本压到约 2 次 RC4。
搜索跑在ProcessPoolExecutor独立进程中(见 campaign.py),破解器对象可 pickle 序列化,UI 线程全程不阻塞——测试test_cracker_picklable_and_recovers_after_roundtrip专门验证了这一往返。
五、FMS 与 KoreK:顽固情况的回退设计
PTW 并非万能。当 IV 质量不佳(如 IV 空间覆盖偏斜)时,项目为这套恢复器设计了双保险,官方说明在 src/wifit3/campaigns/wep/README.md:
原生路径移植了 PTW(Pyshkin / Tews / Weinmann 2007):RC4 内层循环、IV 到密钥字节的投票统计、候选搜索,并配有 FMS + KoreK 回退以应对顽固情况。自包含,不依赖任何外部破解器。
- FMS(Fluhrer-Mantin-Schneier):历史上最早系统性攻击 WEP 的算法,与 PTW 同源互补,在 PTW 票数不够锐利时提供另一条统计路径
- KoreK:源自 2004 年的经典技术族,wifit3 中同时落地为 ChopChop 攻击(利用 AP 的 ICV 校验逐字节解出明文并伪造 ARP 种子),解决"重放没有 ARP 可用"的启动问题
aircrack-ng工具 | wifit3 纯 Python 对应 |
|---|---|
airodump-ng(被动收包) | Scanner / Focus + IV 去重计数 |
aireplay-ng(主动发包) | campaigns/wep/ 全套 |
aircrack-ng(PTW / FMS / KoreK) | crack/wep.py 原生 PTW + 回退 |
六、界面实战:一个按钮的完整体验
在 Focus 界面中,WEP 网络会点亮ARP Replay按钮(热键r):
- 点击后自动执行伪造认证 → ARP 重放,日志实时滚动 IV 速率
- 无客户端流量时,点击Chop开关即可暂停重放、转逐字节伪造模式(互斥切换,一次只有一个 TX 活动占用半双工射频)
- IV 攒够后破解器在后台进程里随到随试,成功时刻界面以醒目的青底黑字块展示
✓ CRACKED WEP KEY(可打印字符还会附 ASCII 形式,见 _key_markup)
整个流程"永不因单次失败自动停止":AP 无响应时继续当前模式重试并滚动计数(如ChopChop: byte 4/36),由人来判断何时切换——唯一的自动跃迁是"成功"。
七、无硬件也能验证:全离线测试
纯 Python 实现的另一大红利是可离线证明正确性。tests/crack/test_wep_crack.py 用选定密钥合成 4–9 万个随机 IV 的 WEP 包,喂给破解器后断言恢复出原密钥,覆盖:
- RC4 经典测试向量(
RC4("Key") ⊕ "Plaintext"=BBF316E8D940AF0AD3) - 40-bit / 104-bit 密钥端到端恢复
- 单样本投毒下的容错(正确键不被一个脏样本否决)
- 样本极少时绝不返回伪密钥(验证机制兜底)
八、快速上手
uv sync uv run wifit3首次启动后选择你的 USB 网卡,点击START(Linux 会一次授权写 udev 规则,Windows 走 UAC 装 WinUSB),随后扫描、锁定 WEP 网络、启动 ARP Replay 即可。支持硬件完整清单见 docs/SUPPORTED-HARDWARE.md。
⚠️合规提醒:wifit3 直接操作 USB 硬件寄存器、无内核护栏,请仅在自己拥有或已获明确授权审计的网络上使用。
写在最后
wifit3 把"抓 IV → 投票 → 搜索 → 验证"整条 WEP 密钥恢复链路收进一个自包含的 Python 模块,用 PTW 主算法加 FMS/KoreK 回退的组合,既保留了统计攻击的数学内核,又用容错验证和进程隔离解决了工程上的脏数据与性能问题——这正是"纯 Python 也能做无线电审计"的完整范例。
【免费下载链接】wifit3Wifite but USB-only & cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考