为什么半次WPA2握手就足够破解?WPA2-HalfHandshake-Crack的加密逻辑深度解析

【免费下载链接】WPA2-HalfHandshake-Crack This is a POC to show it is possible to capture enough of a handshake with a user from a fake AP to crack a WPA2 network without knowing the passphrase of the actual AP. 【免费下载链接】WPA2-HalfHandshake-Crack 项目地址: https://gitcode.com/gh_mirrors/wp/WPA2-HalfHandshake-Crack

WPA2-HalfHandshake-Crack 是一款基于 Python 的 WPA2 半次握手破解工具(POC)。它证明了一个反直觉的事实:你不需要守在真实路由器旁等待完整四次握手——只要伪造一个与目标同名 SSID 的接入点(Fake AP),从一次注定失败的认证中截获客户端回传的两个握手报文,就能离线对 Wi-Fi 口令发动字典攻击。本文带你从零拆解这套"半次 WPA2 握手破解"背后的加密逻辑。

📡 项目速览:5 个文件看懂这个工具

文件作用
halfHandshake.py主程序入口:解析 pcap、按客户端配对半次握手报文
cracker.py破解核心:PBKDF2 派生 → PTK 计算 → MIC 校验,多进程字典爆破
pcapParser.pypcap 捕获文件的读取与解析
dictionary.txt内置字典,约 347 万条候选口令
sampleHalfHandshake.cap一份可直接运行的"半次握手"示例抓包

🤔 温习一下:WPA2 四次握手在做什么?

当客户端连接 WPA2 网络时,双方会交换 4 条 EAPOL-Key 报文:

  1. Message 1(AP → 客户端):携带 ANonce(AP 随机数)
  2. Message 2(客户端 → AP):携带 SNonce(客户端随机数)和 MIC(消息认证码)
  3. Message 3(AP → 客户端):确认并下发组密钥 GTK
  4. Message 4(客户端 → AP):最终确认

传统字典攻击等的是这 4 条报文"完整出现"。而关键洞察是:攻击者真正需要的只是 Message 1 + Message 2。第 3、4 条只是安装密钥用的确认消息,对离线字典爆破毫无价值。

这就是"半次握手"名字的由来——只有一半,信息量却已经足够。

🎯 为什么半次握手就够?Fake AP 攻击思路

传统攻击必须"守在真实 AP 旁边"等握手发生,WPA2-HalfHandshake-Crack 把这个前提打破了:

  1. 听:未关联的客户端会周期性广播明文 Probe Request(探测请求),里面写明它正在寻找哪个 SSID;
  2. 仿:攻击者架设一个 SSID 完全相同、口令随意乱设 的 Fake AP;
  3. 诱:客户端发现"家网"回来了,主动连接,完成 Message 1 + Message 2 的交换;
  4. 败:由于 Fake AP 并不知道真实口令,后续认证必然失败——但这一步已经不重要了;
  5. 破:拿抓下来的报文在本地跑字典攻击,还原出客户端真实使用的 Wi-Fi 口令。

换句话说:真实 AP 从未登场,客户端却亲手把"我掌握口令"的签名(MIC)递给了攻击者。

🔐 核心加密逻辑:从口令到 MIC 的 4 步推导

这部分对应 cracker.py 的实现。攻击者对字典里的每一句候选口令,都重复同样的推导:

第 1 步:PMK 派生(最耗时的瓶颈) PMK = PBKDF2(口令, SSID, 4096 次迭代, 32 字节) 口令与 SSID 共同决定 PMK(预共享主密钥)。4096 次 PBKDF2 迭代正是 WPA2 刻意设置的"算力门槛"——每次猜测都要进行成百上千次哈希运算,这把 GPU 破解速度死死锁在低个位数/秒,所以 WPA2 口令破解拼的是字典命中率而非蛮力。

第 2 步:组装 PKE(密钥扩展材料) PKE = "Pairwise key expansion" + 两端 MAC 地址(按字典序小/大排列)+ ANonce 与 SNonce(同样小/大排列)。

第 3 步:PRF 展开得到 PTK 以 PMK 为密钥对 PKE 执行 4 次 HMAC-SHA1 拼接,得到 80 字节的 PTK(成对临时密钥),源码中即 hmac4times() 函数。

第 4 步:MIC 校验,一击定胜负 用 PTK 的前 16 字节(MKID)作密钥,对 Message 2 报文主体做 HMAC,算出 16 字节 MIC;若与客户端在 Message 2 中携带的 MIC 完全一致 → 口令命中!

💡 一句话总结加密逻辑:口令 + SSID + 两个随机数 + 两端 MAC,共同决定了一个可验证的签名(MIC)。 只要截获 Message 1/2,攻击者就握有完整的验证条件——而 SSID 本身还是明文的。

⚙️ 快速上手:5 分钟跑通示例

git clone https://gitcode.com/gh_mirrors/wp/WPA2-HalfHandshake-Crack
cd WPA2-HalfHandshake-Crack
python setup.py install
python halfHandshake.py -r sampleHalfHandshake.cap -m 48d224f0d128 -s "no place like 127.0.0.1"

参数速查:

参数含义
-rpcap 抓包文件(半次/完整握手均可)
-mFake AP 的 MAC 地址(去掉冒号)
-sAP 的 SSID
-d可选,自定义字典;缺省使用 dictionary.txt

两个工程细节值得新手留意:

  • cracker.py 用 multiprocessing 按 CPU 核数开进程池,字典放在共享 Queue 里"抢活干",多核近乎线性加速;
  • 这是面向 Python 2 的旧代码(setup.py 依赖 pypcapfile 与 pbkdf2_ctypes),新系统上建议直接阅读源码学习加密流程。

📶 实战进阶:如何抓到一次"半次握手"?

  1. 开启监控模式:airmon-ng start wlan0,生成 mon0 接口;
  2. 用 airodump-ng mon0 观察列表底部 BSSID 为 (not associated) 的客户端 Probe,WPA2 的 SSID 会直接显示出来,这些设备即可作为目标;
  3. 针对目标 SSID 架设同名 Fake AP(Ubuntu 下可用 hostapd 或软 AP 方案);
  4. 用 tcpdump -i wlan0 -s 65535 -w file.cap 持续抓包;
  5. (可选)对附近网络发送 Deauth 包,促使客户端重新探测,提高命中率;
  6. 把 file.cap 喂给 halfHandshake.py,即可开始字典爆破。

🛡️ 从 POC 看防御:普通用户该怎么做?

  • 探测请求是明文的:你的设备会不断"喊出"自己连过的 SSID 与 MAC 地址,暴露使用习惯与位置;
  • 弱口令 = 白给:4096 次 PBKDF2 迭代挡不住 347 万条的大字典,建议 12 位以上随机口令;
  • 关掉"自动连接":避免被 Fake AP 诱导完成半次握手;
  • 给 SSID 加点辨识度:不与他人重名,能降低被"顺手"攻击的概率。

✅ 总结

WPA2-HalfHandshake-Crack 用一个轻量 POC 证明了:WPA2 口令的安全性建立在"握手中客户端的 MIC 签名"上,而这份签名并不依赖真实 AP 在场。理解 PBKDF2 → PTK → MIC 这条链路(见 cracker.py),既看懂了 WPA2 的加密设计,也看懂了它"字典攻击面"的边界。把这个项目当作加密原理的活教材来读,收获会远大于仅仅把它当作一个工具。

【免费下载链接】WPA2-HalfHandshake-Crack This is a POC to show it is possible to capture enough of a handshake with a user from a fake AP to crack a WPA2 network without knowing the passphrase of the actual AP. 【免费下载链接】WPA2-HalfHandshake-Crack 项目地址: https://gitcode.com/gh_mirrors/wp/WPA2-HalfHandshake-Crack

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐