wpa_passphrase "testing" "testingpassword"network={
ssid="testing"
#psk="testingpassword"
psk=ae9400eac47807861c32f6b2d52434594fe1f1cbbd5ae0d89d5199ea5e4c79aa
}
我做了一个 python 脚本,因为这篇维基百科文章告诉我如何计算 wpa psk:
https://en.wikipedia.org/wiki/Wi-Fi_Protected_Access#Target_users_.28authentication_key_distribution.29
像这样:
import hashlib, binascii
def wpa_psk(ssid, password):
dk = hashlib.pbkdf2_hmac('sha1', str.encode(password), str.encode(ssid), 4096)
return (binascii.hexlify(dk))
print((wpa_psk("testing", "testingpassword")))
输出:
b'ae9400eac47807861c32f6b2d52434594fe1f1cb'
这是
wpa_passphrase
工具生成的 psk 的一部分。缺少了什么? 最佳答案
唯一缺少的是在调用 hashlib.pbkdf2_hmac() 时指定 dklen 参数。此参数应设置为 32。
import hashlib, binascii
def wpa_psk(ssid, password):
dk = hashlib.pbkdf2_hmac('sha1', str.encode(password), str.encode(ssid), 4096, 32)
return (binascii.hexlify(dk))
print((wpa_psk("testing", "testingpassword")))
关于passwords - Python wpa_passphrase (linux binary) 实现只生成部分 psk,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46502224/