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

Clé*_*ent 30 wpa-supplicant security password wpa

我的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"
}
Run Code Online (Sandbox Code Playgroud)

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

ChangeLog 似乎声称这是可行的(自 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
Run Code Online (Sandbox Code Playgroud)

一些注意事项:

1该分析者声称使用散列密码意味着散列成为密码。这在技术上是正确的,但至少散列是一个仅限 wifi 的密码,这比泄露授予访问多个服务的共享密码有重大进步。

Gui*_*ido 25

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

echo -n plaintext_password_here | iconv -t utf16le | openssl md4
Run Code Online (Sandbox Code Playgroud)

在 wpa_supplicant.conf 文件中用“hash:”作为前缀,即

password=hash:6602f435f01b9173889a8d3b9bdcfd0b
Run Code Online (Sandbox Code Playgroud)

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

echo -n plaintext_password_here | iconv -t UTF-16LE | openssl md4
Run Code Online (Sandbox Code Playgroud)

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


GAD*_*D3R 25

打开终端并输入:

wpa_passphrase YOUR_SSID YOUR_PASSWORD
Run Code Online (Sandbox Code Playgroud)

示例输出:

network={
    ssid="YOUR_SSID"
    #psk="YOUR_PASSWORD"
    psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702
}
Run Code Online (Sandbox Code Playgroud)

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

psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702
Run Code Online (Sandbox Code Playgroud)

  • OP 询问的是 WPA-EAP,而不是 WPA-PSK。 (7认同)
  • WPA PSK(SSID 和密码的散列组合)与 NTLM 散列/NtPasswordHash(仅是密码的 16 位 MD4 散列)不同。 (3认同)
  • 抱歉,如果帖子没有说清楚:这正是我列出的第一个非重复项中的解决方案。我询问的配置中没有预共享密钥。 (3认同)
  • 这可能不是被问到的具体问题,但它帮助我解决了我的问题。谢谢你。 (2认同)