wpa-suppicant介紹_第1頁
wpa-suppicant介紹_第2頁
wpa-suppicant介紹_第3頁
wpa-suppicant介紹_第4頁
wpa-suppicant介紹_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、本來以為這個東西只有在 Atheros的平臺上用的,突然發(fā)現(xiàn) 移植??磥硎莻€好東西,學(xué)習(xí)一下。 官方的模塊框圖Ralink的平臺也可以用,甚至還看到還有老美把這個東西往 android上 I wpa.cli | GUI frontend 、 / fronldpd cnlnl inleffacc 股來說很多模塊可以根據(jù)需要選用的 EAP methods EAP state machine 如果你不需要支持wpa-enterprise 那么這兩個模塊都不需要編譯。 wpa_cli 和 GUI 這兩個可以不要,直接寫個控制腳本,把用戶的參數(shù)變?yōu)榕湄G文件,重啟 wpa_supplicant drive

2、r event driver event 無線驅(qū)動和本程序通訊的接口,一般高級的無線驅(qū)動都支持 WEX丁就是驅(qū)動里面通過 wireless_send_event 把一些狀 態(tài)信息發(fā)到本程序處理。 driver i/f 一些ioctl接口,同樣用于無線驅(qū)動和本程序之間傳遞信息。 EAPOL state machine 負(fù)責(zé)處理 PTK 4-way HS 和 GTK 2-way HS l2_package EAPOI pre auth都要通過這個接口收發(fā)包。 configuration 負(fù)責(zé)處理用戶配谿文件的模塊 大致流程(For WPA-PSK): 1 讀取配谿文件 2 初始化配谿參數(shù),驅(qū)動函數(shù)

3、 wrapper 3 讓驅(qū)動scan當(dāng)前所有bssid(包括wpa AP和non-wpa AP) 4 檢查掃描的參數(shù)是否和用戶設(shè)谿的相符 5 如果相符,設(shè)谿 associate request ie 通知驅(qū)動進(jìn)行auth assoc步驟 4 Four-way handshake for PTK 5 Two-way handshake for GTK接收AP發(fā)出的指令,定期更換GTK 這個程序和 madwifi通信主要通過 wirelessEXT,其實(shí)就是netlink ,在madwifi驅(qū)動中會調(diào)用 wireless_event_send 這個函數(shù)把相 關(guān)的東西發(fā)至U wpa_supplica

4、nt WPA-PSK己谿文件的寫法 一般這樣寫可以兼容 WP麻日WPA2 CCMP TKIP network= ssid=myssid key_mgmt=WPA-PSK proto=WPA RSN pairwise=TKIP CCMP psk=myasciipsk 編譯方法: Makefile需要讀取一個.config 文件,這個文件里面包含交義編譯路徑設(shè)谿,模塊配谿選項(xiàng)。 參考配谿文件 For wpa-psk madwifi * CROSS_COMPILE=/opt/mips-linux- CC=$CROSS_COMPILEgcc CONFIG_DRIVER_MADWIFI=y CFLAGS

5、 += -I./src/802_11/madwifi/madwifi CONFIG_DRIVER_WIRED=y CONFIG_IEEE8021X_EAPOL=y CONFIG_BACKEND=file * 啟動方法(Atheros Driver): #I建無線interface 模式設(shè)谿為managed wlaconfig ath create wlandev wifi0 wlanmode sta #設(shè)谿ath0到自動模式,這樣scan的時候會掃所有的頻道2.4g 5g 11nagb。 iwpriv ath0 mode auto #設(shè)谿好配谿文件,啟動 wpa_supplicant wpa_

6、supplicant - i ath0 - b br0 - c /tmp/supplicant.conf -B 主要參數(shù)含義: ath0是無線interface ,通過這個參數(shù),函數(shù)就可以通過 iotcl調(diào)用無線驅(qū)動中的接口 br0 是 bridge interface , EAPOL L2 package都通過這個接口 收發(fā)。 -c表示配谿文件 -B daemonlise 源碼關(guān)鍵函數(shù) wpa_supplicant_add_iface wpa_supplicant_init_iface wpa_supplicant_set_driver wpa_config_read wpa_supplic

7、ant_init_iface2 wpa_supplicant_init_eapol wpa_drv_init wpa_drv_set_param wpa_supplicant_init_wpa wpa_supplicant_driver_init wpa_supplicant_req_scan / trigger scan state wpa_supplicant_scan wpa_supplicant_set_suites wpa_sm_set_assoc_wpa_ie_default /add wpa rsn ie in associate req 有時候AP會被加到blackList中,

8、主要原因可以參考下面的代碼。主要是收到 deauth這個event和auth timeout wpa_supplicant_event_disassoc wpa_blacklist_add wpa_supplicant_timeout wpa_blacklist_add 何時會婦名單中如除。 wpa_supplicant掃描的結(jié)果是從 madwifi中得到的,由于linux kernel 里面設(shè)谿了掃描 buffer的大小,wireless.h 中定義這個大 小為#define IW_SCAN_MAX_DATA096 ,所以這個buffer很容易就溢出了,導(dǎo)致一些結(jié)果無法傳送到 wpa_sup

9、plicant ,為此madwifi 在掃描的時候設(shè)畚了一心i濾束件,現(xiàn)提取 wpa的AP,再提取none-wpa的,這樣改善了很多,但是通常在么司研發(fā)環(huán)境中還是很容 易出現(xiàn)溢出。 (以下分析基于 wpa_supplicant 0.5.10 版本) 1. 啟動命令 wpa supplicant 在啟動時,啟動命令可以帶有很多參數(shù),目前我們的啟動命令如下: wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -fZdataZwifiZwpa_log.txt wpa_sup

10、plicant對于啟動命令帶的參數(shù),用了兩個數(shù)據(jù)結(jié)構(gòu)來保存, 一個是 wpa_params, 另一個是 wpa_interface. 這主要是考慮到wpa_supplicant是可以同時支持多個網(wǎng)絡(luò)接口的。 wpa_params數(shù)據(jù)結(jié)構(gòu)主要記錄與網(wǎng)絡(luò)接口無關(guān)的一些參數(shù)設(shè)谿。 而每一個網(wǎng)絡(luò)接口就用一個 wpa_interface 數(shù)據(jù)結(jié)構(gòu)來記錄。 在啟動命令行中,可以用-N來指定將要描述一個新的網(wǎng)絡(luò)接口,對于一個新的網(wǎng)絡(luò)接口,可以用下面六個參數(shù)描述: -i : 網(wǎng)絡(luò)接口名稱 -c:配谿文件名稱 -C: 控制接口名稱 -D: 驅(qū)動類型 -p: 馬區(qū)動參數(shù) -b: 橋接 口名稱 2. wpa_sup

11、plicant 初始化流程 2.1. main()函數(shù): 在這個函數(shù)中,主要做了四件事。 a. 解析命令行傳進(jìn)的參數(shù)。 b. 調(diào)用 wpa_supplicant_init()函數(shù),做wpa_supplicant 的初始化工作。 c. 調(diào)用 wpa_supplicant_add_iface() 函數(shù),增加網(wǎng)絡(luò)接口。 d. 調(diào)用 wpa_supplicant_run() 函數(shù),讓 wpa_supplicant 真正的 run 起來。 2.2. wpa_supplicant_init() 函數(shù): a. 打開debug文件。 b. 注冊EAP peer方法。 c. 申請wpa_global內(nèi)存,該數(shù)據(jù)

12、結(jié)構(gòu)作為統(tǒng)領(lǐng)其他數(shù)據(jù)結(jié)構(gòu)的一個核心, 主要包括四個部分: wpa_supplicant *ifaces /*每個網(wǎng)絡(luò)接口都有一個對應(yīng)的wpa_supplicant 數(shù)據(jù)結(jié)構(gòu),該指針指向最近加入的一個,在 wpa_supplicant數(shù)據(jù)結(jié)構(gòu)中有指針指向 next*/ wpa_params params /*啟動命令行中帶的通用的參數(shù) */ ctrl_iface_global_priv *ctrl_iface /*global 的控制接 口 */ ctrl_iface_dbus_priv *dbus_ctrl_iface /*dbus 的控制接 口 */ d. 設(shè)谿wpa_global中的wpa

13、_params中的參數(shù)。 e. 調(diào)用 eloop_init 函數(shù)將全局變量 eloop 中的 user_data 指針指向 wpa_global。 f. 調(diào)用 wpa_supplicant_global_ctrl_iface_init 函數(shù)初始化 global 控制接口。 g. 調(diào)用 wpa_supplicant_dbus_ctrl_iface_init 函數(shù)初始化 dbus 控制接口。 h. 將該 daemon的 pid 寫入 pid_file 中。 2.3. wpa_supplicant_add_iface() 函數(shù): 該函數(shù)根據(jù)啟動命令行中帶有的參數(shù)增加網(wǎng)絡(luò)接口 a. 因?yàn)閣pa_sup

14、plicant是與網(wǎng)絡(luò)接口對應(yīng)的重要的數(shù)據(jù)結(jié)構(gòu),所以,首先分配一個 wpa_supplicant數(shù)據(jù)結(jié)構(gòu)的內(nèi)存 b. 調(diào)用wpa_supplicant_init_iface() 函數(shù)來做網(wǎng)絡(luò)接口的初始工作,主要包括: 設(shè)谿驅(qū)動類型,默認(rèn)是 wext; wpa_supplicant數(shù)據(jù)結(jié)構(gòu)中的conf指針指向的數(shù)據(jù)結(jié)構(gòu),它是一個 wpa_config類型; 和驅(qū)動參數(shù)driver_param 覆蓋配谿文件里設(shè)谿,命令行中的優(yōu)先; 拷貝網(wǎng)絡(luò)接口名稱和橋接口名稱到 wpa_config數(shù)據(jù)結(jié)構(gòu); ,有幾個就增加幾個。 讀取配谿文件,并將其中的信息設(shè)谿到 命令行設(shè)谿的控制接口 ctrl_interfa

15、ce 對丁網(wǎng)絡(luò)配谿塊有兩個鏈表描述它,一個是 config-ssid, 它按照配谿文件中的順序依次掛載在這個鏈表上,還有一個是 pssid ,它 是一個二級指針,指向一個指針數(shù)組,該指針數(shù)組按照優(yōu)先級從高到底的順序依次保存 wpa_ssid指針,相同優(yōu)先級的在同一鏈表中 掛載。 c.調(diào)用 wpa_supplicant_init_iface2() 函數(shù),主要包括: 調(diào)用 wpa_supplicant_init_eapol() 函數(shù)來初始化 eapol ; 調(diào)用相應(yīng)類型的driver的init() 函數(shù); 設(shè)谿 driver 的 param 參數(shù); 調(diào)用wpa_drv_get_ifname()函數(shù)

16、獲得網(wǎng)絡(luò)接口的名稱,對丁 wext類型的driver ,沒有這個接口函數(shù); 調(diào)用wpa_supplicant_init_wpa() 函數(shù)來初始化wpa,并做相應(yīng)的初始化工作; 調(diào)用wpa_supplicant_driver_init() 函數(shù),來初始化driver接口參數(shù);在該函數(shù)的最后,會 wpa_s-prev_scan_ssid = BROADCAST_SSID_SCAN; wpa_supplicant_req_scan(wpa_s, interface_count, 100000); 來主動發(fā)起scan, 調(diào)用wpa_supplicant_ctrl_iface_init() 函數(shù),來初始

17、化控制接口;對丁 UNIX SOCKE這種方式,其本地 socket文件是由配谿文件 里的ctrl_interface 參數(shù)指定的路徑加上網(wǎng)絡(luò)接口名稱; 2.4. wpa_supplicant_run() 函數(shù): 初始化完成之后,讓 wpa_supplicant 的 main event loop run 起來。 在wpa_supplicant中,有許多與外界通信的socket ,它們都是需要注冊到 eloop event模塊中的,具體地說, 就是在 eloop_sock_table 中增加一項(xiàng)記錄,其中包括了 sock_fd, handle, eloop_data, user_data 。

18、eloop event模塊就是將這些socket組織起來,統(tǒng)一管理,然后在 eloop_run中利用select機(jī)制來管理socket的通信。 3. wpa_supplicant 的對外接口分析 對丁 wpa_supplicant模塊的對外接口,主要有以下幾種: 3.1. global control interface: 用丁配谿(增加或刪除)網(wǎng)絡(luò)接口。 3.2. ctrl interface: 與其他外部模塊交互的控制接口。 例如,在初始化時,android 平臺的 wifi.c 中的wifi_connect_to_supplicant 函數(shù)調(diào)用 wpa_ctrl_open 函數(shù)創(chuàng)建兩個

19、socket , 一 個是 ctrl interface ,另一個就是 monitor interface,monitor interface 這個接口用于監(jiān)測從 wpa_supplicant 發(fā)出的 event 事件。 這兩個socket創(chuàng)建成功后,monitor interface 會發(fā)送ATTACH wpa_supplicant 模塊,wpa_supplicant模塊收到后,會將該客戶 端的socket信息記錄下來,用于以后發(fā)送事件時用(由于用的是 DGRA的方式)。 3.3. socket for ioctl: 發(fā)送命令到 kernel space 。 3.4. socket (net

20、link) for interact between kernel and userspace(AF_NETLINK, NETLINK_ROUTE)接受 kernel 發(fā)送上來的 event。 3.5. socket for l2 packet(PF_PACKET): 處理 802.1x 報(bào)文。 2、代碼結(jié)構(gòu) 核心功能、通用輔助功能、加密功能、 TLS庫、配谿、控制接口、WP敬供者、EAP點(diǎn)、EAPOlJg供、窗口端口和測試程序。 wpa_supplicant的實(shí)現(xiàn)被分成幾個獨(dú)立的模塊。核心代碼功能包括控制網(wǎng)絡(luò)選擇、連接和配谿。獨(dú)立模塊包括 WPA( key handshake, PMKS骸存

21、,pre-授權(quán)),EAPOL犬態(tài)機(jī)和EAP狀態(tài)機(jī)和方法。另夕卜,還有一些具有通用幫助功能的單獨(dú)文件。 WP麻日EAPOL/EA狀態(tài)機(jī)可以單獨(dú)的用于其它的程序中。代碼中有 eapol_test和preauth_test實(shí)例代碼使用這另個模塊。 Driver interface API 實(shí)在driver.h 中定義的,所有硬件/驅(qū)動相關(guān)的功能都是在 driver_*.c 中實(shí)現(xiàn)的。 2.1wpa_supplicant 核心功能 wpa_supplicant.c 程序初始化、控制主循環(huán)。 main.c驅(qū)動事件處理;wpa_supplicant_enent() 和相關(guān)功能。 wpa_supplican

22、t_i.h 核心功能和的內(nèi)部定義;2獨(dú)立的模塊中不應(yīng)該包含這個頭文件。 2.2通用輔助功能 wpa_supplicant使用同樣的輔助功能,其中的一些事和 hostapd共用的。目前它使用以下代碼: eloop.c和eloop.h事件循環(huán)(select()循環(huán),具有可選超時、socket讀數(shù)據(jù)回調(diào)和信號回調(diào))。 common.c和 common.h Commo輔助函數(shù)。defs.h多個文件共用的定義。 l2_packet.h, l2_packet_linux.c, 和 l2_packet_pcap.c Layer2 (連接層)訪問包裝(包括 linux 本地的實(shí)現(xiàn)和對 libdnet/libp

23、cap 的包裝)函數(shù)。在移植到libdnet/libpcap 不支持的新系統(tǒng)的時候需要添加新的 l2_packet implementation。可以用Makefile 來選 擇包含那個 l2_packet 實(shí)現(xiàn)。l2_packet_linux.c 使用 linux 的包套接字(packet sockets ), l2_packet_pcap.c 移植性更好,使用 libpcap 和 libdnet。 pcsc_funcs.c and pcsc_funcs.h Wrapper for PC/SC lite SIM and smart card readers priv_netlink.h 來自

24、linux內(nèi)核文件的私有版本的網(wǎng)絡(luò)連接定義,它可以被C庫頭文件替代once suitable version becomescommonly available 。 version.h 版本號定義. wireless.h 私有版本的 來自內(nèi)核的 linux wireless extension 定義; 可以被 C 庫頭文件代替 once suitable version becomes commonly available 。 2.3加密功能。 md5.c md5.h MD5 HMAC-MD5 rc4.c rc4.h RC4(broadcase/default key encryption)

25、sha1.c sha1.h SHA-1 (replaced with a crypto library if TLS support is included) HMAC-SHA-1 (keyed checksum for message authenticity validation) PRF-SHA-1 (pseudorandom (key/nonce generation) function) PBKDF2-SHA-1 (ASCII passphrase to shared secret) T-PRF (for EAP-FAST) TLS-PRF (RFC 2246)sha256.c an

26、d sha256.h SHA-256 (replaced with a crypto library if TLS support is included) aes_wrap.c, aes_wrap.h, aes.c AES (replaced with a crypto library if TLS support is included), AES Key Wrap Algorithm with 128-bit KEK, RFC3394 (broadcast/default key encryption), One-Key CBC MAC (OMAC1) hash with AES-128

27、, AES-128 CTR mode encryption, AES-128 EAX mode encryption/ decryption, AES-128 CBC crypto.h Definition of crypto library wrapper crypto_openssl.c Wrapper functions for libcrypto (OpenSSL) crypto_internal.c Wrapper functions for internal crypto implementation crypto_gnutls.c Wrapper functions for li

28、bgcrypt (used by GnuTLS) ms_funcs.c and ms_funcs.h Helper functions for MSCHAPV2 and LEAP tls.h Definition of TLS library wrapper tls_none.c Dummy implementation of TLS library wrapper for cases where TLS functionality is not included. tls_openssl.c TLS library wrapper for openssl tls_internal.c TLS

29、 library for internal TLS implementation tls_gnutls.c TLS library wrapper for GnuTLS 2.4 TLS (Transport Layer Security ,傳輸層安全協(xié)議) 庫 asn1.c and asn1.h ASN.1 DER parsing bignum.c and bignum.h Big number math rsa.c and rsa.h RSA x509v3.c and x509v3.h X.509v3 certificate parsing and processing tlsv1_clie

30、nt.c, tlsv1_client.h TLSvl client (RFC 2246) tlsv1_client_i.h Internal structures for TLSv1 client tlsv1_client_read.c TLSv1 client: read handshake messages tlsv1_client_write.c TLSv1 client: write handshake messages tlsv1_common.c and tlsv1_common.h Common TLSv1 routines and definitions tlsv1_cred.

31、c and tlsv1_cred.h TLSv1 credentials tlsv1_record.c and tlsv1_record.h TLSv1 record protocol 2.5配谿 config_ssid.h 每個網(wǎng)絡(luò)的配谿項(xiàng)目。 config.h wpa_supplicant 的再己谿定義。 config.c 配谿解析器和 common functions 。 config_file.c 文本配谿文件的后端(e.g., wpa_supplicant.conf) 。 config_winreg.c Configuration backend for Windows regist

32、ry 2.6控制接口 wpa_supplicant有一個可以被外部程序用來得到狀態(tài)信息和進(jìn)行管理操作的控制接口。在 wpa_supplicant的發(fā)行版中包括了使用這 個 控制接口的命令行接口( wpa_cli )和圖形接口( wpa_gui)。 ctrl_iface.c 和 ctrl_iface.h wpa_supplicant-side 的控制接口。 ctrl_iface_unix.c 基于 UNIX domain sockets 的控制接口后端。 ctrl_iface_udp.c 基于 UDP sockets 的控制接口后端。 ctrl_iface_named_pipe.c Window

33、s named pipes -based control interface backend 。 wpa_ctrl.c and wpa_ctrl.h 提供給外部程序訪問 wpa_supplicant的控制接口的庫函數(shù)。 wpa_cli.c Example program for using wpa_supplicant control interface 。 2.7 WPA supplicant wpa.c and wpa.h WPA 的狀態(tài)機(jī)和 4-Way/Group Key Handshake processing 。 preauth.c and preauth.h PMKSA cachi

34、ng 和 pre-authentication (RSN/WPA2) 。 wpa_i.h Internal definitions for WPA code; not to be included to other modules2.8 EAP peer EAP peer implementation is a separate module that can be used by other programs than just wpa_- supplicant. eap.c and eap.h EAP state machine and method interface eap_defs.

35、h Common EAP definitions eap_i.h Internal definitions for EAP state machine and EAP methods; not to be included in other modules eap_sim_common.c and eap_sim_common.h Common code for EAP-SIM and EAP-AKA eap_tls_common.c and eap_tls_common.h Common code for EAP-PEAP, EAP-TTLS, and EAP-FAST eap_tlv.c

36、and eap_tlv.h EAP-TLV code for EAP-PEAP and EAP-FAST eap_ttls.c and eap_ttls.h EAP-TTLS eap_pax.c, eap_pax_common.h, eap_pax_common.c EAP-PAX eap_psk.c, eap_psk_common.h, eap_psk_common.c EAP-PSK (note: this is not needed for WPA-PSK) eap_sake.c, eap_sake_common.h, eap_sake_common.c EAP-SAKE eap_gps

37、k.c, eap_gpsk_common.h, eap_gpsk_common.c EAP-GPSK eap_aka.c, eap_fast.c, eap_gtc.c, eap_leap.c, eap_md5.c, eap_mschapv2.c, eap_otp.c, eap_peap.c, eap_- sim.c, eap_tls.c Other EAP method implementations 2.9 EAPOL supplicant eapol_supp_sm.c and eapol_supp_sm.h EAPOL supplicant state machine and IEEE

38、802.1X processing 2.10 Windows port ndis_events.c Code for receiving NdisMIndicateStatus() events and delivering them to wpa_supplicantdriverndis.c in more easier to use form win_if_list.c External program for listing current network interface 2.11 Test programs radius_client.c and radius_client.h R

39、ADIUS authentication client implementation for eapol_test radius.c and radius.h RADIUS message processing for eapol_test eapol_test.c Standalone EAP testing tool with integrated RADIUS authentication client preauth_test.c Standalone RSN pre-authentication tool wpa_passphrase.c WPA ASCII passphrase t

40、o PSK conversion Generated on 3、控制接口 wpa_supplicant實(shí)現(xiàn)了一個由外部程序使用來控制 wpa_supplicant守護(hù)程序操作和得到狀態(tài)信息和事件通知的控制接口。有一個單 獨(dú)文件的小C庫wpa_ctrl.c 提供輔助函數(shù)來方便使用這個控制接口。外部程序可以把這個文件鏈接到他們并使用 wpa_ctrl.h中提 供的函數(shù)來與wpa_supplicant交互。這個庫也可以被 C+-#用。wpa_cli.c和wpa_gui是使用這個庫的實(shí)例。 3.1使用控制接口。 要與wpa_supplicant 通信的程序應(yīng)該鏈接wpa_ctrl.c 文件。這使他們可

41、以用輔助函數(shù),使用wpa_ctrl_open()來打開與 wpa_supplicant控制接口的鏈接,通過 wpa_ctrl_request() 來發(fā)送命令。 wpa_supplicant使用控制接口進(jìn)行兩種通信: 命令和主動發(fā)送事件信息。命令式一對消息,包括來自外部程序的請 求和來自 wpa_supplicant的響應(yīng),這可以通過 wpa_ctrl_request() 來執(zhí)行。主動的事件消息是由 wpa_supplicant發(fā)送到控 制接口鏈接的, 無需從外部程序指定接收每個消息的請求。 然而,外部程序需要通過wpa_strl_attach() 來attach到控制接口來接收這些主 動消息。

42、 如果控制接口的鏈接被用來同時發(fā)送名利和處理事件消息, 那么在命令的請求和回應(yīng)之間可能出現(xiàn)一個事件消息。 wpa_ctrl_request() 的調(diào)用者需要提供一個回調(diào)函數(shù)(比如 msg_cD來處理這些消息。通常可以調(diào)用 wpa_ctrl_open()兩次打開兩個與 wpa_supplicant 控制 接口的鏈接,一個連接用來處理命令,一個用來處理事件消息。這樣一對請求 /回應(yīng)就不會被事件消息打斷了。 wpa_cli提供了 使用一個連接wpa_gui提供了使用兩個連接的實(shí)例。 一旦不再需要與控制接口的鏈接,應(yīng)該調(diào)用 wpa_ctrl_close() 來關(guān)閉這個鏈接。如果是用來處理事件消息的鏈接

43、,應(yīng)該先調(diào)用 wpa_ctrl_detach()來斷開。 3.2控制接口命令 以下命令可以用于 wpa_ctrl_request() : 3.2.1 PING 用來測試wpa_supplicant是否回應(yīng)控制接口命令。如果鏈接打開并且 wpa_supplicant正在處理命令放回PONG 3.2.2 MIB 請求MIB變量(dot1x , dot11 ) list ,輸出是每行一個 variable=value 的文本塊。比如: dot11RSNAOptionImplemented=TRUE dot11RSNAPreauthenticationImplemented=TRUE dot11RSN

44、AEnabled=FALSE dot11RSNAPreauthenticationEnabled=FALSE dot11RSNAConfigVersion=1 dot11RSNAConfigPairwiseKeysSupported=5 3.3.3 STATUS請求當(dāng)前 WPA/EAPOL/EAft狀態(tài)信息。輸出是每行一個 vaiable=value bssid=02:00:01:02:03:04 ssid=test network pairwise_cipher=CCMP group_cipher=CCMP key_m g mt=WPA- PSK wpa_state=COMPLETED ip

45、_address=192.168.1.21 Supplicant PAE state=AUTHENTICATED suppPortStatus=Authorized EAP state=SUCCESS 3.3.4 STATUS-VERBOSE 和STATU奪目同,但是提供更多的信息。 bssid=02:00:01:02:03:04 ssid=test network id=0 pairwise_cipher=CCMP group_cipher=CCMP key_m g mt=WPA- PSK wpa_state=COMPLETED ip_address=192.168.1.21 Supplic

46、ant PAE state=AUTHENTICATED suppPortStatus=Authorized heldPeriod=60 authPeriod=30的文本塊。比如:startPeriod=30 maxStart=3 portControl=Auto Supplicant Backend state=IDLE EAP state=SUCCESS reqMethod=0 methodState=NONE decision=COND_SUCC ClientTimeout=60 3.2.5 PMKSA 顯示PMKS屢存。 Index / AA / PMKID / expiration (

47、in seconds) / opportunistic 1 /02:00:01:02:03:04 / 000102030405060708090a0b0c0d0e0f /41362 / 0 2 /02:00:01:33:55:77 / 928389281928383b34afb34ba4212345 / 362 /1 3.2.6 SET 設(shè)谿變量。 EAPOL:heldPeriod EAPOL:authPeriod EAPOL:startPeriod EAPOL: maxStart dot11 RSNAConfigPMKLifetime dot11 RSNAConfigPMKReauthThr

48、esholddotllRSNAConfigSATimeout Example command: SET EAPOL:heldPeriod 45 3.2.7 LOGON IEEE 802.1X EAPOL state machine logon. 3.2.8 LOGOFF IEEE 802.1X EAPOL state machine logoff. 3.2.9 REASSOCIATE Force reassociation. 3.2.10 RECONNECT Connect if disconnected (i.e., like REASSOCIATE, but only connect if

49、 in disconnected state). 3.2.11 PREAUTH Start pre-authentication with the given BSSID. 3.2.12 ATTACHAttach the connection as a monitor for unsolicited events. This can be done with wpa_ctrl_attach(). 3.2.13 DETACH Detach the connection as a monitor for unsolicited events. This can be done with wpa_c

50、trl_detach(). 3.2.14 LEVEL Change debug level. 3.2.15 RECONFIGURE Force wpa_supplicant to re-read its configuration data. 3.2.16 TERMINATE Terminate wpa_supplicant process. 3.2.17 BSSID Set preferred BSSID for a network. Network id can be received from the LIST_NETWORKS command output. 3.2.18 LIST_N

51、ETWORKS List configured networks. network id / ssid / bssid / flags 0 example network any CURRENT (note: fields are separated with tabs) 3.2.19 DISCONNECT Disconnect and wait for REASSOCIATE or RECONNECT command before connecting. 3.2.20 SCAN Request a new BSS scan. 3.2.21 SCAN_RESULTS Get the lates

52、t scan results. bssid / frequency / signal level / flags / ssid 00:09:5b:95:e0:4e 2412 208 WPA-PSK-CCMP jkm private 02:55:24:33:77:a3 2462 187 WPA-PSK-TKIP testing 00:09:5b:95:e0:4f 2412 209 jkm guest (note: fields are separated with tabs) 3.2.22 BSS 獲得詳細(xì)的單個BSSffi索結(jié)果。BSg令可以每次一個BSS的遍歷搜索結(jié)果和取得找到的 BSS的全

53、部信息。它提供對SCAN_RESULTS 用的相同的數(shù)據(jù)的訪問,但是避免了關(guān)于大量搜索結(jié)果與 ctrl_iface 消息not fitting 的問題。 它提供了兩種選擇 BSS的方法:BSS ,取得搜索結(jié)果table中通過index (0-size-1 )標(biāo)識的BSS的信息;BSS BSSID取得 給定的BSSID的BSS的信息,BSSID使用00:01:02:03:04:05 格式。 BSS信息使用下面的格式表示。但是新的 filed 可能被添加到這個數(shù)據(jù)中,所以控制接口的用戶應(yīng)該呢可以忽略它不理解的值。 bssid=00:09:5b:95:e0:4e freq=2412 beacon_i

54、nt=0 capabilities=0 x0011 qual=51 noise=161 level=212 tsf=0000000000000000 ie=000b6a6b6d2070726976617465010180dd180050f20101000050f20401000050f20401000050f2020000 ssid=jkm private 3.2.23 SELECT_NETWORK 選擇一個網(wǎng)絡(luò)(禁用其他的網(wǎng)絡(luò))。network id 可以通過LIST_NETWORK命令的輸出得到。 3.2.24 ENABLE_NETWORK 使一個網(wǎng)絡(luò)可用。network id 可以通過LIST_NETWORKT令的輸出得到。使用 all作為network id 可以使所有網(wǎng)絡(luò)可用。 3.2.25 DISABLE_NETWORK 禁用一個網(wǎng)絡(luò)。network id 可以通過LIST_NETWORKT令的輸出得到。使用 all作為network id 可以使所有網(wǎng)絡(luò)禁用。 3.2.26 ADD_NETWORK 添加一個網(wǎng)絡(luò)。這個命令創(chuàng)建一個沒有配谿的新網(wǎng)絡(luò)。新創(chuàng)建的網(wǎng)絡(luò)默認(rèn)是禁用的,配谿

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論