passwords - Python wpa_passphrase (linux binary) 实现仅生成部分 psk

标签 passwords linux wireless pbkdf2

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/

相关文章:

security - 我应该对密码施加最大长度限制吗?

C 程序与 Linux/BSD 和不同体系结构的兼容性

java - 如何从 EditView 检查密码?

如果用户提供非英语密码,PostgreSQL 安装会中断

linux - 在版本名称和版本号之间进行过滤

c - 如何在处理信号时阻止相同的信号?

linux - 如何编写 shell 脚本从我的密码文件中输入无线连接密码?

c++ - USB 射频接收器鼠标黑客攻击

linux - wpa_passphrase 是否使用哈希算法?

database - 在数据库中存储密码的最佳方式