【ARM-Linux开发】Wi-Fi 应用工具wpa_supplicant
wpa_supplicant是一个跨平台的无线安全管理软件,这里需要用它来对无线网络进行配置,wpa_supplicant相关工具已经移植好,包含在我们提供的文件系统中。
配置无线网络
wpa_supplicant软件包分为服务端wpa_supplicant和客户端wpa_cli两部分组成。wpa_supplicant为主服务程序,wpa_cli即client的意思,相当于wpa_supplicant的UI。
配置无线网络有两种方式,可以使用wpa_cli客户端手动方式,还可以使用conf配置文件进行自动方式。
wpa_supplicant配置路径:/etc/wpa_supplicant.conf
手动设置
⑴ 启动wpa_supplicant后台服务:
1
|
#
wpa_supplicant -iwlan0 -Dwext -B -c/etc/wpa_supplicant.conf |
⑵ 运行客户端程序,进入wpa_cli控制台:
1
|
#
wpa_cli -iwlan0 |
这时将进入wpa_cli的命令行界面,输入如下命令,扫描并显示无线热点:
> scan
> scan_r
扫描结果将类似如下打印:
bssid / frequency / signal level/ flags / ssid
0a:11:b5:25:d8:cb 2412 -61 [WPA-EAP-CCMP+TKIP][WPA2-EAP-CCMP+TKIP][ESS] CMCC-AUTO
0c:82:68:c7:60:28 2447 -58 [WPA2-PSK-CCMP+TKIP][ESS]MYIR-LINK
bc:d1:77:21:11:72 2437 -60 [WEP][ESS] TP-LINK
00:11:b5:19:d2:86 2412 -61 [ESS] CMCC
00:23:89:03:f8:20 2462 -68 [ESS] ChinaNet
这里显示了附近的无线网络,每个无线网络都有5项参数,分别为MAC地址、频率、信号强度、加密类型、SSID。
频率:单位为Hz,同时也知道了其所在频道。例如2412即2.412GHz,就是频道1,2437即2.437GHz,则是频道6。
信号强度:单位为dbm,一般为负值,数值越大,信号越强,例如-60dbm的CMCC比-61dbm的CMCC-AUTO信号要强。
加密类型:[ESS]表示无加密的无线网络,[WEP]表示WEP加密方式,[WPA2-PSK-CCMP+TKIP]表示WPA2加密方式。
⑶ 增加网络
在连接无线网络之前,需要新建一个网络配置,使用add_network命令增加一个网络,可以使用list_network查看增加的网络信息。在wpa_cli的命令行中输入:
1
2
3
4
5
6
|
>
list_n[ / align]network
id
/
ssid /
bssid /
flags >
add_n 0 >
list_n network
id
/
ssid /
bssid /
flags 0
any [DISABLED] |
如果之前没有配置过网络,使用“add_n”将返回0号配置,用“add_n <num>”可以建立更多配置。
⑷ 设定连接① 无加密无线网络
在wpa_cli的命令行中输入:
1
|
>
set_n 0
ssid "MYIR-LINK" [ / align] >
set_n 0
key_mgmt NONE |
② WEP加密的无线网络
假设key为“12345”在wpa_cli的命令行中输入:
1
2
3
|
>
set_n 0
ssid "MYIR-LINK-WEP" >
set_n 0
key_mgmt NONE >
set_n 0
wep_key 0
"12345" |
③ WPA-PSK/WPA2-PSK加密的无线网络
假设key为“Make Your Idea Real”,在wpa_cli的命令行中输入:
密文保存
附录 wpa_cli 命令
1
|
>
set_n 0
ssid "MYIR-LINK-WPA2" [ / align] >
set_n 0
psk "Make
Your Idea Real" |
⑸ 使能网络连接
使用enable_network命令使能网络连接:
1
|
>
enable_n 0 |
看到“CTRL-EVENT-CONNECTED”信息,表示连接完成。
自动设置
将当前的网络配置保存到conf文件,方便以后调用,在wpa_cli的命令行中输入:
1
|
>
save_c |
最后输入“quit”或“CTRL+C” 退出wpa_cli命令行界面。
通过DHCP获取IP地址:
1
|
#
udhcpc -n -i wlan0 |
通过ping命令检查网络是否联通,例如:
1
|
#
ping 192.168.1.1 |
密文保存
前面为了方便介绍,配置文件采用的是明文方式保存,这里介绍如何使用密文方式加密conf文件中的key参数。在开发板中使用wpa_passphrase工具转换连接密码,将明文key转换为密文,如果key中包含空格需使用斜杠转译字符,例如:
1
|
#
wpa_passphrase MYIR-LINK Make\ Your\ Idea\ Real |
然后终端上会打印出配置文件的密文参数形式,如下图所示:
network={
ssid="MYIR-LINK"
#psk="Make Your Idea Real"
psk=31bb00abde903c543e774637489c20938652aa13f804b54fbf3f124336ef16ba
}
附录 wpa_cli 命令