news 2026/8/27 17:12:43

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
为什么半次WPA2握手就足够破解?WPA2-HalfHandshake-Crack的加密逻辑深度解析

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

【免费下载链接】WPA2-HalfHandshake-CrackThis 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.项目地址: 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-CrackThis 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.项目地址: https://gitcode.com/gh_mirrors/wp/WPA2-HalfHandshake-Crack

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 17:01:18

Python实现TOPSIS多属性决策分析:从原理到实战应用

1. 项目概述:用Python量化决策,告别“拍脑袋” 在数据分析、项目管理、产品选型甚至个人决策中,我们常常面临一个经典难题:面对一堆各有优劣的选项,到底哪个才是“最好”的?比如,要从几个供应商…

作者头像 李华