gpt4 book ai didi

linux - 如何在 Linux 上以编程方式验证 WPA 密码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:27 28 4
gpt4 key购买 nike

我正在尝试验证用户为 WPA 连接输入的 SSID 和 WPA 密码。我的程序是运行在嵌入式Linux平台上的Python程序。我可以通过解析 iwlist scan 子进程的输出来验证具有 SSID 的接入点是否存在。然而,验证密码短语并不那么直接。到目前为止,我想出的唯一解决方案是解析

的输出

wpa_supplicant -Dwext -iwlan0 -c/tmp/wpa_supplicant.conf

寻找

"pre-shared key may be incorrect"

或内核消息

"OnDeAuth Reason code(15)"

(根据 wpa_supplicant 源,这意味着 WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT)。

将握手超时解释为无效的密码似乎是完全错误的。除此之外,该方法需要等待子进程的一些输出,并假设没有错误消息意味着密码有效。

谷歌搜索只会让我返回很多关于如何破解 WPA 连接的问题和建议!我的目标平台的 yum 存储库中没有 wpa_cliiwevent,我不确定如何让第三方 python 包在我的目标上运行。

问题:验证 Wifi WPA 密码的最简单方法是什么?

最佳答案

好吧,满足您的需求的一种不太直接(但唯一可能)的方法是启动与 AP 的四次握手。
由于您使用 Python 进行编码,因此 Scapy 将是制作 EAPOL 消息数据包的最佳选择。
不过,您必须了解 EAPOL 数据包的结构,并在您的代码中完全实现它。
您还必须在 Python 中重新编码 key 生成函数,其中大部分(如果不是全部)是 PRF **(伪随机函数);或者,您可以导入现成编译的 .DLL 来为您进行编码。

但是,只管理四次握手的前 3 条消息就足够了:
如果在多次连接尝试后,AP 没有发送第三条 key 消息,那么来自 STA 的 MIC(消息完整性检查)与 AP 生成的 MIC(消息完整性检查)不匹配,因此密码无效。
否则就是。

注意:wpa_supplicant 遵循相同的身份验证和连接程序,但是它会继续获取额外信息,例如 IP 地址等等...这就是为什么我说这是唯一可能的方式。

关于linux - 如何在 Linux 上以编程方式验证 WPA 密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484086/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com