本程序是一个用 Python 编写的工具,用于恢复 WPA2 WiFi 网络的预共享密钥,无需任何去认证,也无需网络上有任何客户端。它针对的是某些接入点在 EAPOL 消息 1 中通告 PMKID 值的弱点。
python pmkidcracker.py -s <SSID> -ap <APMAC> -c <CLIENTMAC> -p <PMKID> -w <WORDLIST> -t <THREADS(可选)>
注意: apmac、clientmac、pmkid 必须是十六进制字符串,例如 b8621f50edd9
获取 PMKID 的两个主要公式如下:
这只是为了理解,两者都已经在 find_pw_chunk 和 calculate_pmkid 中实现。
以下是通过在 WireShark 中检查数据包来手动获取 PMKID 的步骤。
**可以使用 Hcxtools 或 Bettercap 快速获取 PMKID,无需执行以下步骤。手动方式是为了理解。*
要在 wireshark 中手动获取 PMKID,请将无线网卡置于监控模式,使用 airodump-ng 或类似工具开始捕获所有数据包。然后使用无效密码连接到 AP 以捕获 EAPOL 1 握手消息。按照以下 3 个步骤获取参数所需的字段。
在 WireShark 中打开 pcap:
wlan_rsna_eapol.keydes.msgnr == 1,仅显示 EAPOL 消息 1 数据包。如果接入点存在漏洞,您应该会看到类似以下截图的 PMKID 值:
本工具仅用于教育和测试目的。请勿将其用于利用任何您不拥有或未经许可测试的网络上的漏洞。本脚本的作者不对其使用造成的任何误用或损害负责。