1、移植 wpa_supplicant 到 arm-linux 宿主機開發環境:Ubuntu 10.10 /Fedora 12 32 bits 目標開發板:Mini6410 arm-linux 內核 Kernel: 2.6.38 交叉編譯器 CROSS_COMPILE:arm-linux-gcc-4.5.1 1.移植準備 a. 下載 openssl 源代碼 (使用 openssl-0.9.8e )官網: http:/www.openssl.org/source/ 源碼:http:/www.openssl.org/source/openssl-0.9.8e.tar.gzb. 下載 wpa_supplicant 源代碼 (使用 wpa_supplicant-0.7.3 ) 官網:http:/hostap.epitest.fi/wpa_supplicant/ 源碼:http:/hostap.epitest.fi/releases/wpa_supplicant-0.7.3.tar.gzc: 下載:libtommath 源代碼(libtommath_0.39.orig.tar.gz)源碼:ftp:/
2、220.165.12.10/debian/pool/main/libt/libtommath/libtommath_0.39.orig.tar.gz 2. 編譯 openssla.將 openssl 解到 wpa_supplicant/patches 目錄下# tar zxvf openssl-0.9.8e.tar.gz -C ./ wpa_supplicant-0.7.3/patches/b.將 openssl-0.9.8-tls-extensions.patch 拷貝到 wpa_supplicant/patches/openssl-0.9.8e 目錄 下# cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/ c.patch openssl-0.9.8e# patch -p1 產生 libssl.a 及 libcrypto.a方式 2.# ./Configure no-asm -prefix=/usr/local/openssl # make CC=arm-linux-
3、gcc install產生 libssl.so 及 libcrypto.so 3.編譯 libtommath-0.39a.將 libtommath-0.39 解到/usr/src/ 目錄下# tar zxvf libtommath_0.39.orig.tar.gz -C /usr/srcb.編譯 libtommath# make CC=arm-linux-gcc 產生 libtommath.a 4. 編譯 wpa_supplicant(增加 WPS 功能)#cp defconfig .config CONFIG_DRIVER_WEXT=y CONFIG_IEEE8021X_EAPOL=y CONFIG_EAP_FAST=y CONFIG_TLS=openssl CONFIG_TLS=internal CONFIG_INTERNAL_LIBTOMMATH=y ifndef CONFIG_INTERNAL_LIBTOMMATH LTM_PATH=/usr/src/libtommath-0.39 CFLAGS += -I$(LTM_PATH) LIBS += -L$(LTM_PATH) LI
4、BS_p += -L$(LTM_PATH) endif CONFIG_WPS=y CONFIG_EAP_WPS=y #vim .config CC= gcc -L/usr/local/ssl/lib/ CFLAGS += -I/usr/local/ssl/include/ LIBS += -L/usr/local/ssl/lib/ #make CC=arm-linux-gcc install 修正 WEP 中 open/share 無法正確選擇 WPA_SUPPLICANT 當遇到 WEP 加密時,由於無法判斷是採用 OPEN/SHARE,通常會在 聲稱.conf 檔中加入 auth_alg=OPEN SHARED(至少 Android 遇到),但事實上某些 wifi 網 卡驅動不能實現同時 OPEN 和 SHARED 同時設置,任意時刻只能用一個,這裏給出解決 不能同時設置的方法,在 wpa_supplicant.c:wpa_supplicant_associate()中加入以下內容: if (ssid-auth_alg) algs = 0;if (ssid-auth_alg if
5、(ssid-auth_alg if (ssid-auth_alg wpa_printf(MSG_DEBUG, “Overriding auth_alg selection: 0x%x“,algs);/新增這段if (algs G_TRY_CONNECT +;if (G_TRY_CONNECT = 4) algs = AUTH_ALG_OPEN_SYSTEM;wpa_printf(MSG_DEBUG, “RAYDEBUG-change to ALG_OPEN_SYSTEM“);Wpa_supplicant.conf 說明#Arm-linux/linux /建立 socket ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=wheelupdate_config=1 (可以在 wpa_cli 中保存配置檔) #ap_scan=1#Android /建立 socket ctrl_interface=DIR=/data/misc/wifi ctrl_interface_group=wifi update_config=1 (
6、可以在 wpa_cli 中保存配置檔) #ap_scan=1#WPA/WPA2 # WPA-PSK, PSK use ASCII (只要密碼正確就允許) #network= # ssid=“AcSiP“ /AP 名稱 #psk=“1111111111“ /密碼 # #Higher priority use first # priority=5 # The same as above, assign SSID for AP without brocast SSID(針對那些拒絕廣播 SSID 的 AP) #network= #network= # ssid=“second ssid“ # scan_ssid=1 # psk=“very secret passphrase“ # priority=2 # Allow WPA-PSK only. Allow any valid password set(允許使用任何合法的加密方式的組合) #network= # ssid=“example“ # proto=WPA # key_mgmt=WPA-PSK # pairwise=CCMP TKIP
7、 # group=CCMP TKIP WEP104 WEP40 # psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb# priority=2 # Plaintext( Not use 802.1X )明文连接方式(不使用 WPA 和 IEEE802.1X) #network= # ssid=“plaintext-test“ # key_mgmt=NONE # Shared WEP, Not use IEEE 802.11 Shared Key(不使用 WPA 和 IEEE802.1X) network= ssid=“Test1“ key_mgmt=NONE # 引號包含的密鑰是 ASCII 密鑰 wep_key0=“abcde“ # 沒有引號包含的密鑰是十六進位密鑰 wep_key1=0102030405 wep_key2=“1234567890123“ wep_tx_keyidx=0 priority=5 #Shared WEP, Use IEEE 802.11 Shared Key #netwo
8、rk= # ssid=“Test1“ # key_mgmt=NONE # wep_key0=“aaaaa“ # wep_key1=“aaaaa“ # wep_key2=“aaaaa“ # wep_key3=“aaaaa“ # wep_tx_keyidx=0 # priority=5 # auth_alg=SHARED #IBSS/ad-hoc with WPA-None/TKIP #network= # ssid=“test adhoc“ # mode=1 # proto=WPA # key_mgmt=WPA-NONE# pairwise=NONE # group=TKIP # psk=“secret passphrase“ #wpa_cli 說明# wpa_cli -i status (看看目前的狀態) # wpa_cli -i help (查看參數與指令) # wpa_cli -i terminate (關閉 wpa_supplicant) # wpa_cli -i interface (查看有那些無線網卡介面) # wpa_cli -i list_networks (查看 wpa
9、_supplicant.conf 檔裡的設定) # wpa_cli -i select_network (選擇不同的 AP,id 為 AP 代號 0,1,2,3.) # wpa_cli -i enable_network # wpa_cli -i disable_network # wpa_cli -i remove_network (刪除 AP 資訊) # wpa_cli -i reconfigure (重新讀取 wpa_supplicant.conf 設定內容) # wpa_cli -i save_config (儲存寫入到 wpa_supplicant.conf 中,否責變更無效) # wpa_cli -i disconnect (斷線) # wpa_cli -i reconnect (重新連線) # wpa_cli -i scan (掃描附近的 AP) # wpa_cli -i scan_results (印出附近 AP 的相關資訊)以上常常用到的差不多是 disconnect, reconnect, scan, scan_results, select_network, list_networks, status, reconfigure 測試 WPSwpa_supplicant.conf#Arm-linux/linux:建立 socket ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0update_config=1 #ap_scan=1 eapol_ver
《移植wpa_supplicant》由会员ji****n分享,可在线阅读,更多相关《移植wpa_supplicant》请在金锄头文库上搜索。