前言:本文主要講解了wpa_suppliant的兩種移植方法,和wpa配置文件的使用,以及wpa_suppliant,wpa_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_suppliant,wpa_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_cli和wpa_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_suppliant,wpa_cli,wpa_passphrase等可執行工具。
#make
4.使用strip工具,將wap_suppliant,wpa_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_cli和wpa_passphrase複製到根文件系統的/sbin/目錄下
三.wpa_suppliant配置文件
wpa_suppliant使用wpa.cfg文件對無線模塊進行關聯設置。其支持無密碼驗證方式,WEP開放式,WPA-PSK,WPA2-PSK,WPA-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參數可省略,-iwlan0是wpa_cli和wpa_supplicant進行unix方式進行進程間通信的文件名。wpa_supplicant執行時會在/data/system/wpa_supplicant目錄下創建eth1文件,所以就能通信了。
ssid後psk後面參數是字符串,在使用的時候不僅要加雙引號,還要在添加單引號,否則會提示執行錯誤。