wpa_suppliant工具的移植和使用

前言:本文主要講解了wpa_suppliant的兩種移植方法,和wpa配置文件的使用,以及wpa_suppliantwpa_cli參數使用方法,最後講解了wpa_suppliant如何使用配置文件和wpa_cli方式進行無線模塊關聯。

目前可以使用wireless-tools wpa_supplicant工具來配置無線網絡。wireless_tools的缺點是不支持WPA認證,wpa_supplicant支持WPA認證。

.wpa_suppliant不依賴openssl方式

1.解壓解壓縮廠家提供的驅動RS.GENR.LNX.SD.3.2.6.rar,進入到wpa_supplicant目錄中.

2.修改.config文件

#cp defconfig .config

#vim .config

首先在第一行執行交叉編譯鏈
CC = $(CROSS_COMPILE)gcc
然後屏蔽以下選項
#CFLAGS +=-I/usr/local/openssl/
#CFLAGS +=-I/usr/local/ssl/include/
#LIBS   +=-L/usr/local/openssl/lib/
然後將CONFIG_TLS=openssl修改成 CONFIG_TLS=internal
CONFIG_TLS=internal
最後將以下注釋的語句改爲不註釋
CONFIG_INTERNAL_LIBTOMMATH=y
ifndef CONFIG_INTERNAL_LIBTOMMATH
LTM_PAHT=/usr/src/libtommath-0.39
CFLAGS += -I$(LTM_PATH)
LIBS += -L$(LTM_)
LIBS_p +=-L$(LTM_PATH)
endif

#make

4.使用strip工具,將wap_suppliantwpa_cli等工具調試信息去掉,減少可執行文件的大小。

#arm-none-linux-gnueabi-strip wpa_suppiant

#arm-none-linux-gnueabi-strip wpa_cli

#arm-none-linux-gnueabi-strip wpa_passphrase

將生成的wpa_supplicant wpa_cliwpa_passphrase複製到根文件系統的/sbin/目錄下

. Wpa_suppliant依賴openssl方式

如果wpa_suppliant使用openssl庫時,在進行移植wap_suppliant前,我們先要移植好openssl

(注意:關於openssl的移植可以參考:http://tigerjibo.blog.51cto.com/7718010/1309570


1.解壓解壓縮廠家提供的驅動RS.GENR.LNX.SD.3.2.6.rar,進入到wpa_supplicant目錄中.

2.修改.config文件

#cp defconfig .config

#vim .config

首先在第一行執行交叉編譯鏈
CC = $(CROSS_COMPILE)gcc –L/usr/local/ssl/lib/

3.執行make操作進行編譯,生成wpa_suppliantwpa_cliwpa_passphrase等可執行工具。

#make

4.使用strip工具,將wap_suppliantwpa_cli等工具調試信息去掉,減少可執行文件的大小。

#arm-none-linux-gnueabi-strip wpa_suppiant

#arm-none-linux-gnueabi-strip wpa_cli

#arm-none-linux-gnueabi-strip wpa_passphrase

將生成的wpa_supplicant wpa_cliwpa_passphrase複製到根文件系統的/sbin/目錄下

.wpa_suppliant配置文件

wpa_suppliant使用wpa.cfg文件對無線模塊進行關聯設置。其支持無密碼驗證方式,WEP開放式,WPA-PSKWPA2-PSKWPA-PSK/WPA2-PSK配置文件。

開放系統配置方式:

ctrl_interface=/var/run/wpa_supplicant
network={
     ssid = “edanb”
     key_mgmt=NONE
     priority=2
}

WEP開放式配置文件

ctrl_interface=/var/run/wpa_supplicant
network={
     ssid = “edanb”
     key_mgmt=NONE
     wep_key0=”123456”
     wep_tx_keyidx=0
     priority=21
}

WPA-PSK配置文件

ctrl_interface=/var/run/wpa_supplicant
network={
     ssid = “edanb”
     proto=WPA
     key_mgmt=WPA-PSK
     pairwise=TKIP
     group=TKIP
     psk=”123456”
     priority=20
}

WPA2-PSK配置

ctrl_interface=/var/run/wpa_supplicant
network={
     ssid = “edanb”
     proto=WPA2
     key_mgmt=WPA-PSK
     pairwise=TKIP
     group=TKIP
     psk=”12345678”
     priority=20
}

WPA-PSK/WPA2-PSK

ctrl_interface=/var/run/wpa_supplicant
network={
     ssid = “edanb”
     psk=”12345678”
     priority=20
}

將改好的wpa.cfg放到根文件系統的etc目錄下。

Note:

1)配置文件中的第一行ctrl_interfac不能修改,或刪除,否則不能正常進行匹配工作。第二行ctrl_interface_group要屏蔽掉
ctrl_interface=/var/run/wpa_supplicant
#ctrl_interface_group=root

2)在配置前要創建/var/run目錄,因此常把該命令放在啓動腳本中執行。

wpa_suppliant使用方法

1.wpa_suppliant常用參數:

-i<ifname> : 網絡接口名稱
-c<conf>: 配置文件名稱
-C<ctrl_intf>: 控制接口名稱
-D<driver>: 驅動名字
-p<driver_param>: 驅動參數
-P<PID file>:通信文件
-b<br_ifname>: 橋接口名稱
-B :在後臺運行 wpa_suppliant等價於在wpa_suppliant命令後加&

2. 使用以下命令即可實現wifi模塊與無線路由器的關聯。

1)不加調試信息

# ./wpa_supplicant-iwlan0 -Drsi -c dummy.cfg &

2)加-dd參數在關聯時可以打印出調試信息

# ./wpa_supplicant-iwlan0 -Drsi -c dummy.cfg -dd &

此處使用的是rsi無線驅動。

.wpa_cli使用方法

wpa_suppliant軟件包中包含客戶端程序wpa_cli,通過它可以動態設置參數進行無線網絡關聯,不需要採用靜態wpa_suppliant配置文件設置無線網絡關聯。

1.wpa_cli使用方法:

1)啓動wpa_suppliant

daemon方式啓動wpa_suppliant

# wpa_supplicant -B –iwlan0 -Drsi -c/etc/wpa.cfg

參數-B代表後臺運行,其中的-i指定無線網卡設備名爲wlan0-D 指定驅動名字,不指定驅動名字,默認爲wext-c指定配置文件是/etc/wpa.cfg,其中不包含要連接的無線網絡的配置信息。

(2) wpa.cfg文件“

最簡單的配置文件只包含一句配置語句即可:

ctrl_interface=/var/run/wpa_supplicant

(3)啓動wpa_cli進行交互配置

//搜索無線網
# wpa_cli  –iwlan0  scan
//顯示搜索結果
# wpa_cli  –iwlan0  scan_results
//查看網絡連接狀態
#wpa_cli   -iwlan0  status    
該命令會返回新增加的網絡的ID,一般是0.
#wpa_cli   -iwlan0  add_network
//設置ssid
#wpa_cli   -iwlan0  set_network  netid  ssid ‘“edanb”’
//設置密碼
#wpa_cli   -iwlan0  set_network  netid  psk ‘“password”’
//設置加密方式
#wpa_cli  -iwlan0  set_network  netid  key_mgmt  WPA-PSK
#wpa_cli  -iwlan0  set_network  netid  pairwise    TKIP
#wpa_cli  -iwlan0  set_network  netid  group      TKIP
#wpa_cli  -iwlan0  set_network  netid  proto       WPA
//使能,進行匹配
#wpa_cli   -iwlan0  enable_network  netid

其他常見無線關聯方式使用方法

連接無加密的AP

//搜索無線網
# wpa_cli  –iwlan0  scan
//顯示搜索結果
# wpa_cli  –iwlan0  scan_results
//查看網絡連接狀態
#wpa_cli   -iwlan0  status    
該命令會返回新增加的網絡的ID,一般是0.
#wpa_cli   -iwlan0  add_network
//設置ssid
#wpa_cli   -iwlan0  set_network  netid  ssid ‘“edanb”’
//設置加密方式
#wpa_cli  -iwlan0  set_network  netid  key_mgmt  NONE
//使能,進行匹配
#wpa_cli   -iwlan0  enable_network  netid

連接WEP加密AP

//搜索無線網
# wpa_cli  –iwlan0  scan
//顯示搜索結果
# wpa_cli  –iwlan0  scan_results
//查看網絡連接狀態
#wpa_cli   -iwlan0  status    
該命令會返回新增加的網絡的ID,一般是0.
#wpa_cli   -iwlan0  add_network
//設置ssid
#wpa_cli   -iwlan0  set_network  netid  ssid ‘“edanb”’
//設置加密方式
#wpa_cli  -iwlan0  set_network  netid  key_mgmt  NONE
//設置共享密碼
#wpa_cli  -iwlan0  set_network  wep_key0  ‘”123456”’
//使能,進行匹配
#wpa_cli   -iwlan0  enable_network  netid

WPA-PAK/WPA2-PSK加密方式

//搜索無線網
# wpa_cli  –iwlan0  scan
//顯示搜索結果
# wpa_cli  –iwlan0  scan_results
//查看網絡連接狀態
#wpa_cli   -iwlan0  status    
該命令會返回新增加的網絡的ID,一般是0.
#wpa_cli   -iwlan0  add_network
//設置ssid
#wpa_cli   -iwlan0  set_network  netid  ssid ‘“edanb”’
//設置密碼
#wpa_cli  -iwlan0  set_network  psk  ‘”123456”’
//使能,進行匹配
#wpa_cli   -iwlan0  enable_network  netid

WPA-PSK加密方式

//搜索無線網
# wpa_cli  –iwlan0  scan
//顯示搜索結果
# wpa_cli  –iwlan0  scan_results
//查看網絡連接狀態
#wpa_cli   -iwlan0  status    
該命令會返回新增加的網絡的ID,一般是0.
#wpa_cli   -iwlan0  add_network
//設置ssid
#wpa_cli   -iwlan0  set_network  netid  ssid ‘“edanb”’
//設置密碼
#wpa_cli   -iwlan0  set_network  netid  psk ‘“password”’
//設置加密方式
#wpa_cli  -iwlan0  set_network  netid  key_mgmt  WPA-PSK
#wpa_cli  -iwlan0  set_network  netid  pairwise    TKIP
#wpa_cli  -iwlan0  set_network  netid  group      TKIP
#wpa_cli  -iwlan0  set_network  netid  proto       WPA
//使能,進行匹配
#wpa_cli   -iwlan0  enable_network  netid

WPA2-PSK加密方式

//搜索無線網
# wpa_cli  –iwlan0  scan
//顯示搜索結果
# wpa_cli  –iwlan0  scan_results
//查看網絡連接狀態
#wpa_cli   -iwlan0  status    
該命令會返回新增加的網絡的ID,一般是0.
#wpa_cli   -iwlan0  add_network
//設置ssid
#wpa_cli   -iwlan0  set_network  netid  ssid ‘“edanb”’
//設置密碼
#wpa_cli   -iwlan0  set_network  netid  psk ‘“password”’
//設置加密方式
#wpa_cli  -iwlan0  set_network  netid  key_mgmt  WPA-PSK
#wpa_cli  -iwlan0  set_network  netid  pairwise    TKIP
#wpa_cli  -iwlan0  set_network  netid  group      TKIP
#wpa_cli  -iwlan0  set_network  netid  proto       WPA2
//使能,進行匹配
#wpa_cli   -iwlan0  enable_network  netid

Note:

如果系統內只有一個無線網卡,則-i wlan0參數可省略,-iwlan0wpa_cliwpa_supplicant進行unix方式進行進程間通信的文件名。wpa_supplicant執行時會在/data/system/wpa_supplicant目錄下創建eth1文件,所以就能通信了。

ssidpsk後面參數是字符串,在使用的時候不僅要加雙引號,還要在添加單引號,否則會提示執行錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章