您的位置:首页 > 运维架构 > Linux

【ARM-Linux开发】Wi-Fi 应用工具wpa_supplicant

2017-01-11 20:38 435 查看
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后台服务:

⑵ 运行客户端程序,进入wpa_cli控制台:

这时将进入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的命令行中输入:

[align=left]如果之前没有配置过网络,使用“add_n”将返回0号配置,用“add_n <num>”可以建立更多配置。[/align]
⑷ 设定连接
[align=left]① 无加密无线网络[/align]

在wpa_cli的命令行中输入:

[align=left]② WEP加密的无线网络[/align]
假设key为“12345”在wpa_cli的命令行中输入:

[align=left]③ WPA-PSK/WPA2-PSK加密的无线网络[/align]
假设key为“Make Your Idea Real”,在wpa_cli的命令行中输入:

[align=left]⑸ 使能网络连接[/align]
使用enable_network命令使能网络连接:

[align=left]看到“CTRL-EVENT-CONNECTED”信息,表示连接完成。[/align]
自动设置
将当前的网络配置保存到conf文件,方便以后调用,在wpa_cli的命令行中输入:

[align=left]最后输入“quit”或“CTRL+C” 退出wpa_cli命令行界面。[/align]
通过DHCP获取IP地址:

通过ping命令检查网络是否联通,例如:

密文保存
前面为了方便介绍,配置文件采用的是明文方式保存,这里介绍如何使用密文方式加密conf文件中的key参数。在开发板中使用wpa_passphrase工具转换连接密码,将明文key转换为密文,如果key中包含空格需使用斜杠转译字符,例如:

[align=left]然后终端上会打印出配置文件的密文参数形式,如下图所示:[/align]
[align=left]network={[/align]
[align=left]       ssid="MYIR-LINK"[/align]
[align=left]       #psk="Make Your Idea Real"[/align]
[align=left]psk=31bb00abde903c543e774637489c20938652aa13f804b54fbf3f124336ef16ba[/align]

[align=left]}[/align]

附录 wpa_cli 命令

  
[align=center]Full command[/align]
  
  
[align=center]Short command[/align]
  
  
[align=center]Description[/align]
  
  
[align=center]status[/align]
  
  
[align=center]stat[/align]
  
  
[align=left]displays the current connection status[/align]
  
  
[align=center]disconnect[/align]
  
  
[align=center]disc[/align]
  
  
[align=left]prevents wpa_supplicant from connecting to any  access point[/align]
  
  
[align=center]quit[/align]
  
  
[align=center]q[/align]
  
  
[align=left]exits wpa_cli[/align]
  
  
[align=center]terminate[/align]
  
  
[align=center]term[/align]
  
  
[align=left]kills wpa_supplicant[/align]
  
  
[align=center]reconfigure[/align]
  
  
[align=center]recon[/align]
  
  
[align=left]reloads wpa_supplicant with the configuration  file supplied[/align]
  
[align=left](-c parameter)[/align]
  
  
[align=center]scan[/align]
  
  
[align=center]scan[/align]
  
  
[align=left]scans for available access points[/align]
  
[align=left](only scans it, doesn't display anything)[/align]
  
  
[align=center]scan_result[/align]
  
  
[align=center]scan_r[/align]
  
  
[align=left]displays the results of the last scan[/align]
  
  
[align=center]list_networks[/align]
  
  
[align=center]list_n[/align]
  
  
[align=left]displays a list of configured networks and their  status[/align]
  
[align=left](active or not, enabled or disabled)[/align]
  
  
[align=center]select_network[/align]
  
  
[align=center]select_n[/align]
  
  
[align=left]select a network among those defined to initiate  a connection[/align]
  
[align=left](ie select_network 0)[/align]
  
  
[align=center]enable_network[/align]
  
  
[align=center]enable_n[/align]
  
  
[align=left]makes a configured network available for  selection[/align]
  
[align=left](ie enable_network 0)[/align]
  
  
[align=center]disable_network[/align]
  
  
[align=center]disable_n[/align]
  
  
[align=left]makes a configured network unavailable for  selection[/align]
  
[align=left](ie disable_network 0)[/align]
  
  
[align=center]remove_network[/align]
  
  
[align=center]remove_n[/align]
  
  
[align=left]removes a network and its configuration from the  list[/align]
  
[align=left](ie remove_network 0)[/align]
  
  
[align=center]add_network[/align]
  
  
[align=center]add_n[/align]
  
  
[align=left]adds a new network to the list. Its id will be  created automatically[/align]
  
  
[align=center]set_network[/align]
  
  
[align=center]set_n[/align]
  
  
[align=left]shows a very short list of available options to  configure a network when supplied with no parameters.[/align]
  
[align=left]See next section for a list of extremely useful  parameters to be used with set_network and get_network.[/align]
  
  
[align=center]get_network[/align]
  
  
[align=center]get_n[/align]
  
  
[align=left]displays the required parameter for the specified  network. See next section for a list of parameters[/align]
  
  
[align=center]save_config[/align]
  
  
[align=center]save_c[/align]
  
  
[align=left]saves the configuration[/align]
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: