使用 WPA-EAP 和 MSCHAP-v2 在 wpa_supplicant.conf 中隐藏密码

使用 WPA-EAP 和 MSCHAP-v2 在 wpa_supplicant.conf 中隐藏密码

我的wpa_supplicant.conf看起来像这样:

network={
  ssid="Some name"
  scan_ssid=1
  key_mgmt=WPA-EAP
  eap=PEAP
  identity="my-user-id"
  password="(clear text password here)"
  ca_cert="/usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt"
  phase2="auth=MSCHAPV2"
}

通过 WPA-EAP 和 MSCHAP-v2 的这种特定组合,有没有办法不在此配置文件中包含我的明文密码?

变更日志似乎声称这是可行的(自 2005 年起!):

* added support for storing EAP user password as NtPasswordHash instead
  of plaintext password when using MSCHAP or MSCHAPv2 for
  authentication (hash:<16-octet hex value>); added nt_password_hash
  tool for hashing password to generate NtPasswordHash

一些注意事项:

1该 anser 声称使用散列密码意味着散列成为密码。这在技术上是正确的,但至少哈希是仅无线网络密码,与泄露授予访问权限的共享密码相比,这是重大进步多种的服务。

答案1

打开终端并输入:

wpa_passphrase YOUR_SSID YOUR_PASSWORD

示例输出:

network={
    ssid="YOUR_SSID"
    #psk="YOUR_PASSWORD"
    psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702
}

打开该wpa_supplicant.conf文件并添加以下行:

psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702

答案2

您可以自行生成NtPasswordHash(又名 NTLM 密码哈希),如下所示:

echo -n plaintext_password_here | iconv -t utf16le | openssl dgst -md4 -provider legacy

在 wpa_supplicant.conf 文件中添加“hash:”前缀,即

password=hash:6602f435f01b9173889a8d3b9bdcfd0b

在 macOS 上, iconv 代码是UTF-16LE

echo -n plaintext_password_here | iconv -t UTF-16LE | openssl dgst -md4 -provider legacy

请注意,您不会获得太多安全感。如果攻击者找到带有哈希值的文件,那么他们可以轻松地加入网络(就像您的计算机一样),因此对密码进行哈希处理根本没有帮助。如果密码在其他地方使用,那么攻击者将不得不使用暴力来查找原始密码(即尝试最可能的密码并计算其哈希值,直到找到匹配项)。由于您可以在普通 PC 上每秒计算大约 10 亿个哈希值,因此这不是一个大障碍,并且攻击者可以轻松使用预先计算的表,因为哈希值是未加盐的。 NT 作为密码哈希算法确实很糟糕。

相关内容