Chinaunix首页 | 论坛 | 博客
  • 博客访问: 554834
  • 博文数量: 127
  • 博客积分: 1169
  • 博客等级: 少尉
  • 技术积分: 1298
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-16 14:29
个人简介

空白

文章分类

全部博文(127)

分类: LINUX

2017-07-07 14:26:08

wpa_supplicant工具主要用于连接WiFi

一、获取wpa_supplicant和openssl-0.9.8za源码
从下载wpa_supplicant-2.5.tar.gz
下载

二、编译wpa_supplicant和openssl-0.9.8za
2.1、解压wpa_supplicant和openssl-0.9.8za
tar zxvf openssl-0.9.8za.tar.gz
tar zxvf wpa_supplicant-2.5.tar.gz

2.2、拷贝wpa_supplicant-2.5/patches目录下openssl-0.9.8za-tls-extensions.patch补丁文件到openssl目录
cp wpa_supplicant-2.5/patches/openssl-0.9.8za-tls-extensions.patch ../openssl-0.9.8za
用patch命令打上补丁
patch -p1 < openssl-0.9.8za-tls-extensions.patch

2.3、编译openssl-0.9.8za
在openssl-0.9.8za目录下建立bin目录,存在openssl编译后库文件
mkdir -p /project/tool/wpa_supplicant/openssl-0.9.8za/bin
修改openssl-0.9.8za目录下Makefile
CC=arm-hisiv300-linux-gcc
AR=arm-hisiv300-linux-ar$(ARFLAGS) r
RANLIB=arm-hisiv300-linux-ranlib
INSTALLTOP=/project/tool/wpa_supplicant/openssl-0.9.8za/bin    #刚才你建立的安装目录,要使用绝对路径,不然在make install的时候会出错
OPENSSLDIR=/project/tool/wpa_supplicant/openssl-0.9.8za/bin #刚才你建立的安装目录,要使用绝对路径,不然在make install的时候会出错
make && make install。

2.4、配置wpa_supplicant编译选项
cd wpa_supplicant-2.5/wpa_supplicant
cp defconfig .config
修改.config,增加以下内容:
CC=arm-hisiv300-linux-gcc -L/project/tool/wpa_supplicant/openssl-0.9.8za/bin/lib
CFLAGS+=-I/project/tool/wpa_supplicant/openssl-0.9.8za/bin/include
LIBS+=-L/project/tool/wpa_supplicant/openssl-0.9.8za/bin/lib

使用默认的.config配置编译出的wpa_supplicant可执行文件较大,通过配置.config文件中选项,可以减小wpa_supplicant可执行文件大小
编辑.config
注释掉CONFIG_DRIVER_HOSTAP=y
注释掉CONFIG_DRIVER_ATMEL=y
注释掉CONFIG_DRIVER_NL80211=y
反注释CONFIG_NO_STDOUT_DEBUG=y
反注释CONFIG_NO_CONFIG_WRITE=y

修改wpa_supplicant的Makefile将:

CFLAGS += -I$(abspath ../src)
CFLAGS += -I$(abspath ../src/utils)

修改为:

CFLAGS += -I../src
CFLAGS += -I../src/utils

2.5、编译wpa_supplicant
make

三、wpa_supplicant、wpa_cli测试
3.1、加载RT7601驱动
insmod /usr/local/ko/mtutil7601Usta.ko
insmod /usr/local/ko/mt7601Usta.ko
insmod /usr/local/ko/mtnet7601Usta.ko

3.2、启动无线网卡
ifconfig ra0 up

3.3、修改/usr/local/config/network/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant              # ..........................
ctrl_interface_group=0                                                  # ......
ap_scan=1
network={
 ssid="KangNianYiHua"
 scan_ssid=1
 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
 pairwise=TKIP CCMP
 group=CCMP TKIP WEP104 WEP40
 psk="knyh6688"
}

3.4、运行wpa_supplicant
wpa_supplicant -B -ira0 -c /usr/local/config/network/wpa_supplicant.conf -Dwext
-B: 后台运行wpa_supplicant
-ira0: 网络设备ra0
-c: 配置文件路径
-Dwext: 驱动类型

3.5、查看WIFI链接状态
iwpriv ra0 connStatus
ra0       connStatus:Connected(AP: KangNianYiHua[8C:A6:DF:B2:B1:DC])

3.6、设置IP地址和网关
ifconfig ra0 192.168.0.166
route add default gw 192.168.0.1

3.7、修改/etc/resolv.conf
nameserver 202.96.134.133

3.8、ping外网
# ping
PING (14.215.177.38): 56 data bytes
64 bytes from 14.215.177.38: seq=0 ttl=54 time=55.148 ms
64 bytes from 14.215.177.38: seq=1 ttl=54 time=81.010 ms
64 bytes from 14.215.177.38: seq=2 ttl=54 time=7.634 ms
64 bytes from 14.215.177.38: seq=3 ttl=54 time=81.256 ms
64 bytes from 14.215.177.38: seq=4 ttl=54 time=46.885 ms
64 bytes from 14.215.177.38: seq=5 ttl=54 time=8.008 ms
64 bytes from 14.215.177.38: seq=6 ttl=54 time=49.751 ms

四、wpa_cli使用方法
Run the command line tool wpa_cli to connect wifi
    wpa_cli -p/data/system/wpa_supplicant -iwlan0
Then , it will let you set network interactively

some common command:
>scan = to scan the neighboring AP
>scan_results = show the scan results
>status = check out the current connection information
>terminate = terminate wpa_supplicant
>quit = exit wpa_cli
>add_network = it will return a network id to you
>set_network = set network variables (shows list of variables when run without arguments), success will return OK, or will return Fail
>select_network = select a network (disable others)
>disable_network = disable a network
>enable_network = enable a network

3: example
for AP that doesn`t have encryption
>add_network      (It will display a network id for you, assume it returns 0)
>set_network 0 ssid “666”
>set_network 0 key_mgmt NONE
>enable_network 0
>quit

if normal, we have connectted to the AP “666”, now you need a IP to access internet, for example:
dhcpcd wlan0
if everything is ok, it will get an IP & can access internet

for AP that has WEP
>add_network      (assume returns 1)
>set_network 1 ssid “666”
>set_network 1 key_mgmt NONE
>set_network 1 wep_key0 “your ap passwork”(if usting ASCII, it need double quotation marks, if using hex, then don`t need the double quotation marks)
>set_network 1 wep_tx_keyidx 0
>select_network 1  (optional, remember, if you are connecting with another AP, you should select it to disable the another)
>enable_network 1
and then ,get an IP to access internet

for AP that has WPA-PSK/WPA2-PSK
>add_network      (assume returns 2)
>set_network 2 ssid “666”
>set_network 2 psk “your pre-shared key”
>select_network 2  (optional, remember, if you are connecting with another AP, you should select it to disable the another)
>enable_network 2
there is still some others options to be set, but wpa_supplicant will choose the default for you, the default will include all we need to set
and then ,get an IP to access internet


使用示例:
# wpa_cli -ira0
> scan
OK
> scan_r
bssid / frequency / signal level / flags / ssid
8c:a6:df:b2:b1:dc       2462    211     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      KangNianYiHua
00:87:36:3e:8b:2d       2412    195     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      360123
24:05:0f:4d:34:48       2412    187     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      T8 wi-fi
78:d3:8d:ea:d9:6c       2442    189     [WPA2-PSK-CCMP][ESS]
58:6d:8f:23:71:95       2412    185     [WPA2-PSK-CCMP][ESS]    mopon-jszc
88:25:93:c8:5a:1e       2437    179     [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]      mopon-test
b0:d5:9d:89:ba:5b       2412    177     [WPA2-PSK-CCMP][ESS]    ____________
f0:b4:29:38:c9:f2       2412    175     [WPA2-PSK-CCMP][ESS]
78:d3:8d:12:ee:50       2462    177     [WPA2-PSK-CCMP][ESS]
80:56:f2:d5:9c:c5       2462    175     [WPA2-PSK-CCMP][ESS]    minePC
70:77:81:32:78:6c       2437    173     [WPA2-PSK-CCMP][ESS]    HP-Print-6c-LaserJet Pro MFP
88:25:93:a5:15:53       2422    179     [ESS]   mopon-dev
> add_network
0
> set_network 0 ssid "KangNianYiHua"
OK
> set_network 0 psk "knyh6688"
OK
> enable_network 0
OK
> status
bssid=8c:a6:df:b2:b1:dc
ssid=KangNianYiHua
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED


阅读(4249) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~