设为首页收藏本站
查看: 10539|回复: 0

Wi-Fi 应用工具wpa_supplicant

[复制链接]

21

主题

21

回帖

575

积分

管理员

积分
575
oneal.tang 发表于 2015-5-13 14:44:02 | 显示全部楼层 |阅读模式
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后台服务:
[mw_shl_code=applescript,true]# wpa_supplicant -iwlan0 -Dwext -B -c/etc/wpa_supplicant.conf[/mw_shl_code]
⑵ 运行客户端程序,进入wpa_cli控制台:[mw_shl_code=applescript,true]# wpa_cli -iwlan0[/mw_shl_code]
这时将进入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的命令行中输入:[mw_shl_code=applescript,true]> list_n
network id / ssid / bssid / flags
> add_n
0
> list_n
network id / ssid / bssid / flags
0               any     [DISABLED]
[/mw_shl_code]
如果之前没有配置过网络,使用add_n将返回0号配置,用add_n <num>可以建立更多配置。
设定连接
无加密无线网络

在wpa_cli的命令行中输入:[mw_shl_code=applescript,true]> set_n 0 ssid "MYIR-LINK"
> set_n 0 key_mgmt NONE
[/mw_shl_code]
WEP加密的无线网络
假设key12345wpa_cli的命令行中输入:[mw_shl_code=applescript,true]> set_n 0 ssid "MYIR-LINK-WEP"
> set_n 0 key_mgmt NONE
> set_n 0 wep_key0 "12345"
[/mw_shl_code]
WPA-PSK/WPA2-PSK加密的无线网络
假设key为Make Your Idea Real,在wpa_cli的命令行中输入:[mw_shl_code=applescript,true]> set_n 0 ssid "MYIR-LINK-WPA2"
> set_n 0 psk "Make Your Idea Real"
[/mw_shl_code]
⑸ 使能网络连接
使用enable_network命令使能网络连接:[mw_shl_code=applescript,true]> enable_n 0[/mw_shl_code]
看到CTRL-EVENT-CONNECTED信息,表示连接完成。
自动设置
将当前的网络配置保存到conf文件,方便以后调用,在wpa_cli的命令行中输入:[mw_shl_code=applescript,true]> save_c[/mw_shl_code]

最后输入quitCTRL+C 退出wpa_cli命令行界面。
通过DHCP获取IP地址:[mw_shl_code=applescript,true]# udhcpc -n -i wlan0[/mw_shl_code]
通过ping命令检查网络是否联通,例如:[mw_shl_code=applescript,true]# ping 192.168.1.1[/mw_shl_code]


密文保存
前面为了方便介绍,配置文件采用的是明文方式保存,这里介绍如何使用密文方式加密conf文件中的key参数。在开发板中使用wpa_passphrase工具转换连接密码,将明文key转换为密文,如果key中包含空格需使用斜杠转译字符,例如:[mw_shl_code=applescript,true]# wpa_passphrase MYIR-LINK Make\ Your\ Idea\ Real[/mw_shl_code]
然后终端上会打印出配置文件的密文参数形式,如下图所示:
network={
       ssid="MYIR-LINK"
       #psk="Make Your Idea Real"
psk=31bb00abde903c543e774637489c20938652aa13f804b54fbf3f124336ef16ba

}


附录 wpa_cli 命令


  
Full command
  
  
Short command
  
  
Description
  
  
status
  
  
stat
  
  
displays the current connection status
  
  
disconnect
  
  
disc
  
  
prevents wpa_supplicant from connecting to any  access point
  
  
quit
  
  
q
  
  
exits wpa_cli
  
  
terminate
  
  
term
  
  
kills wpa_supplicant
  
  
reconfigure
  
  
recon
  
  
reloads wpa_supplicant with the configuration  file supplied
  
(-c parameter)
  
  
scan
  
  
scan
  
  
scans for available access points
  
(only scans it, doesn't display anything)
  
  
scan_result
  
  
scan_r
  
  
displays the results of the last scan
  
  
list_networks
  
  
list_n
  
  
displays a list of configured networks and their  status
  
(active or not, enabled or disabled)
  
  
select_network
  
  
select_n
  
  
select a network among those defined to initiate  a connection
  
(ie select_network 0)
  
  
enable_network
  
  
enable_n
  
  
makes a configured network available for  selection
  
(ie enable_network 0)
  
  
disable_network
  
  
disable_n
  
  
makes a configured network unavailable for  selection
  
(ie disable_network 0)
  
  
remove_network
  
  
remove_n
  
  
removes a network and its configuration from the  list
  
(ie remove_network 0)
  
  
add_network
  
  
add_n
  
  
adds a new network to the list. Its id will be  created automatically
  
  
set_network
  
  
set_n
  
  
shows a very short list of available options to  configure a network when supplied with no parameters.
  
See next section for a list of extremely useful  parameters to be used with set_network and get_network.
  
  
get_network
  
  
get_n
  
  
displays the required parameter for the specified  network. See next section for a list of parameters
  
  
save_config
  
  
save_c
  
  
saves the configuration
  




回复

使用道具 举报

您需要登录后才可以回帖 登录

本版积分规则

Archiver|手机版|小黑屋|米尔科技论坛   

GMT+8, 2024-11-23 05:54 , Processed in 0.038984 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表