我的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)
一些注意事项:
使用不同的密码不是一种选择,因为我无法控制这个网络(这是一个公司网络,一个用户名/密码用于访问所有服务,包括连接到 Wifi)。
关于重复的一句话:
我在我的笔记本电脑上运行 gentoo,我目前正在使用wpa_supplicant来处理 wifi。
我的配置有效,我可以连接,但需要在配置文件中输入纯文本密码。如果我想连接到朋友的 wifi 并且他们想输入密码而不是告诉我密码是什么,这将不起作用。纯文本密码没有安全性。
我怎样才能使它更安全,以便存储某种加密的密码而不是明文?
我有一个 ubuntu 15.10 服务器,它利用 wpa_supplicant 连接到使用 wpa_passphrase 创建的无线网络配置文件。在重新启动时,我第一次调用sudo wpa_supplicant -B -i wlp2s0 -c ./MVS(其中 MVS 是网络的已保存配置文件的名称)时,我得到了输出
Successfully initialized wpa_supplicant
Could not read interface p2p-dev-wlp2s0 flags: No such device
Run Code Online (Sandbox Code Playgroud)
但是退出代码为零,我可以通过运行来确认我实际上已连接到无线网络 sudo iw wlp2s0 link
但是,随后对 wpa_supplicant 的调用(对于其他配置文件甚至相同的配置文件)会产生更详细的输出:
Successfully initialized wpa_supplicant
Could not read interface p2p-dev-wlp2s0 flags: No such device
nl80211: Could not set interface 'p2p-dev-wlp2s0' UP
nl80211: deinit ifname=p2p-dev-wlp2s0 disabled_11b_rates=0
p2p-dev-wlp2s0: Failed to initialize driver interface
P2P: Failed to enable P2P Device interface
Run Code Online (Sandbox Code Playgroud)
wpa_supplicant 仍然返回零退出代码,但这次无线设备绝对没有连接到任何网络。任何建议或想法将不胜感激,我不知道如何调试或修复它。
我的wpa_supplicant程序有问题。
我的问题是关于使用wpa_cli哪个需要wpa_supplicant。我执行时出错sudo wpa_cli:
Could not connect to wpa_supplicant
Run Code Online (Sandbox Code Playgroud)
的手动启动wpa_supplicant给了我一些错误:
sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
rfkill: Cannot open RFKILL control device
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: CTRL-EVENT-DISCONNECTED bssid=00:00:00:00:00:00 reason=0 ### NEW!!!
Run Code Online (Sandbox Code Playgroud)
配置dhcp
## /etc/dhcp/dhcpd.conf
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.2 192.168.2.9;
option domain-name-servers 192.168.1.1;
option domain-name "home";
option routers 192.168.2.1;
}
Run Code Online (Sandbox Code Playgroud)
配置wpa_supplicant
## /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
# network={
# ssid="__SSID__" …Run Code Online (Sandbox Code Playgroud) 这种设置在购物中心和机场似乎很常见。在加拿大西部,Shaw 提供了这样的服务,并将其称为“Shaw Open”。我很确定其他地区也有来自 T-Mobile 等提供商的类似服务。
从手机之类的东西做起来并不复杂。连接到 wifi 热点不需要身份验证,因为它是“开放的”供公众访问。但是,在我使用浏览器并登录 ISP 提供的特定网页之前,我的手机无法通过应用程序连接到网站或远程服务。
我的问题简单地说是:如何从通常没有传统浏览器的设备自动执行身份验证步骤?
在我的特殊情况下,我有一个配置了软件的树莓派,我想在贸易展览等上使用。这些位置具有相同类型的“开放”热点。Raspi 是自给自足的。它只是做自己的生意并与网站交谈。但是这个出站连接被 ISP 的“开放”连接阻止了,因为我没有,也无法完成该过程的浏览器部分。
假设我拥有在特定提供商网络上执行此操作的凭据,如何在不需要我打开与 Pi 的终端会话的情况下自动执行该部分流程? 这里甚至使用了什么样的技术,我可以搜索?
我在跑
uname -r
4.10.6-1-ARCH
Run Code Online (Sandbox Code Playgroud)
在我的戴尔 XPS 13 开发者版(2014 年)上。我目前的 wifi 有一些奇怪的问题(我将 Networkamanger 与nm-appletKDE一起使用):
1)在最肤浅的层面上,我观察到有时它可以完美运行:当我启动我的电脑时,它已经连接到wifi,有时它不会以任何方式连接(wifi始终相同);
2)我尝试重新启动NM:并且问题仍然存在。3)有时,如果我重新启动笔记本电脑,它会再次工作,有时则不会。
4)我尝试使用 nmcli
nmcli connection up My-WiFi
Run Code Online (Sandbox Code Playgroud)
然后我观察
dmesg
[ 250.165837] IPv6: ADDRCONF(NETDEV_CHANGE): wlp2s0: link becomes ready
[ 250.255882] wlp2s0: Limiting TX power to 14 dBm as advertised by 00:3a:9a:32:62:d3
[ 272.004204] wlp2s0: deauthenticating from 00:3a:9a:32:62:d3 by local choice (Reason: 3=DEAUTH_LEAVING)
[ 275.432861] wlp2s0: authenticate with 00:3a:9a:32:62:d3
[ 275.435513] wlp2s0: send auth to 00:3a:9a:32:62:d3 (try 1/3)
[ 275.440164] …Run Code Online (Sandbox Code Playgroud) 当我这样做时:
sudo wpa_supplicant -D nl80211,wext -i wlp4s0 -c <(wpa_passphrase "some ssid" "password")
Run Code Online (Sandbox Code Playgroud)
我得到
Successfully initialized wpa_supplicant
Failed to open config file '/dev/fd/63', error: No such file or directory
Failed to read or parse configuration '/dev/fd/63'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我想禁用systemd不需要的自动启动尝试wpa_supplicant。我认为我可以简单地运行一个
sudo systemctl disable wpa_supplicant.service --global
Run Code Online (Sandbox Code Playgroud)
我不会再在ps -ef输出中看到 wpa_supplicant了。无论如何,这是行不通的。我怎样才能让它工作?
我手头的问题可能最好通过以下输出来描述
$>systemctl status wpa_supplicant*
? wpa_supplicant.service - WPA supplicant
Loaded: loaded (/usr/lib/systemd/system/wpa_supplicant.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2016-08-28 20:57:37 CEST; 14min ago
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,该disabled服务无论如何都已加载并处于活动状态,这要感谢 systemd 完全帮助我完成了最简单的事情;)
更新
我似乎通过粗暴删除这些文件获得了一些运气:
wpa_supplicant-nl80211@.service
wpa_supplicant.service
wpa_supplicant@.service
wpa_supplicant-wired@.service
Run Code Online (Sandbox Code Playgroud)
从/usr/lib/systemd/system文件夹。你猜怎么着?重启后wpa终于不再启动systemd了。虽然必须有一种更和平/和解的方式来让systemd服务不被启动,但我还是很震惊。
通常当我运行时,wpa_supplicant我会得到一些这样的输出:
Successfully initialized wpa_supplicant
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan3: Trying to associate with 9c:3d:cf:fb:95:96 (SSID='Bell420' freq=2462 MHz)
wlan3: Association request to the driver failed
wlan3: Associated with 9c:3d:cf:fb:95:96
wlan3: Authentication with 9c:3d:cf:fb:95:96 timed out.
ioctl[SIOCSIWAP]: Operation not permitted
wlan3: CTRL-EVENT-DISCONNECTED bssid=9c:3d:cf:fb:95:96 reason=3 locally_generated=1
wlan3: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
Run Code Online (Sandbox Code Playgroud)
问题是它只是一遍又一遍地尝试。
有没有一种方法可以告诉我wpa_supplicant在出现明显错误(例如错误的键)时立即退出?
我使用的是带有wpa_supplicant v2.1.
我写了一个解决方法来监视wpa_supplicant不正确的密钥。使用grep上wpa_supplicant(与stdbuf基于斯特凡Chazelas'在这里评论 …
在开始wpa_supplicant工作之前,网络接口必须可用并且必须加载设备的驱动程序。wpa_supplicant允许使用“-D”标志指定驱动程序。我在几个系统上尝试过这个,但wpa_supplicant似乎从来没有接受我指定的驱动程序。例如:
T42 ~ # lspci -v -s 02:02.0
02:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG [Calexico2] Network Connection (rev 05)
Subsystem: Intel Corporation Device 1011
Flags: bus master, medium devsel, latency 64, IRQ 11
Memory at c0214000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [dc] Power Management version 2
Kernel driver in use: ipw2200
Kernel modules: ipw2200
T42 ~ # wpa_supplicant -D ipw2200 -i eth1 -c /root/wpafile
Unsupported driver 'ipw2200'.
T42 ~ #
Run Code Online (Sandbox Code Playgroud)
但是,如果我开始时wpa_supplicant没有指定像 那样的驱动程序 …