我一直在 Linux 机器上托管WPA2
网络hostapd
,我想记录连接失败时使用的错误密钥。如果我的理解正确,则不会传输实际密码,只会传输 64 字节 PSK,这是我所需要的全部。那么,我该如何配置hostapd
以记录连接失败的尝试以及这些尝试中使用的密钥?
答案1
正如 Spiff 已经提到的,在四次握手期间,站点和接入点之间不会交换密码或 256 位成对主密钥 PMK(源自密码和 SSID)。
在您描述的情况下(使用了错误的密码),只会交换前两条消息:
- 在消息 1AP 向站发送一个随机数(Na)。
- 站点使用这个随机数(Na)、他自己的随机数(Ns)、他自己的 MAC 地址、AP 的 MAC 地址和 PMK 来构建消息完整性代码(MIC)。
- 在消息 2然后该站将其随机数(Ns)和 MIC 发送给 AP。
- 接入点现在使用其随机数 (Na)、站点随机数 (Ns)、其自己的 MAC 地址、站点的 MAC 地址和 PMK 来重建从站点收到的 MIC,并以此验证站点使用的 PMK 是否正确。如果站点使用的 PMK 错误,AP 无法验证站点在消息 2 中发送的 MIC。因此,AP 停止握手,并且不发送握手消息 3。
据我所知,在用户空间中您无法访问通过公开的接口在握手期间交换的 EAPOL 管理帧的内容hostapd
。
因此,要找出尝试的密码,最好的选择是使用设置为监控模式的 WiFi 卡捕获 WPA2 握手(EAPOL 帧)。当您在捕获中拥有 4 次握手的前两帧时,您就拥有了从理论上恢复站点使用的密码所需的所有信息,即
- 诺斯·纳
- 随机数
- 站的 MAC 地址
- AP的MAC地址
- 麦克风
您可以使用以下工具aircrack-ng通过对捕获的部分 WPA2 握手进行暴力攻击或字典攻击来恢复密码。
答案2
不,PSK 不会被传输。如果传输,那将是一个糟糕的安全协议。每个人都会伪造附近的 SSID,只是为了让客户端透露他们的密码。
没有办法实现你想要的功能。如果有的话,WPA2 早就被取代了。