學習linux有些段時間了,初次嘗試寫博客,記錄下個人學習的點點滴滴,請大家多多指教。
原文地址:https://www.cnblogs.com/24kCode/p/11890634.html
轉載請注明出處!
一.什么是wpa_spplicant
WPA是WiFi Protected Access的縮寫,中文含義為“WiFi網絡安全存取”。WPA是一種基於標准的可互操作的WLAN安全性增強解決方案,可大大增強現有以及未來無線局域網絡的數據保護和訪問控制水平。
wpa_supplicant是一個開源項目,已經被移植到Linux,Windows以及很多嵌入式系統上。它是WPA的應用層認證客戶端,負責完成認證相關的登錄、加密等工作。
wpa_supplicant是一個獨立運行的守護進程,其核心是一個消息循環,在消息循環中處理WPA狀態機、控制命令、驅動事件、配置信息等。
二.獲取wpa_spplicant
進入官網下載最新版本即可,目前最新版本是2.9:
wget http://w1.fi/releases/wpa_supplicant-2.9.tar.gz
tar -xzf wpa_supplicant-2.9.tar.gz
mv wpa_supplicant-2.9 wpa_supplicant
編譯wpa_supplicant步驟省略...
三.添加wpa_supplicant源碼到工程
將下載的源碼放到工程中,包含wpa_ctrl.h頭文件即可
#include "wpa_supplicant/src/common/wpa_ctrl.h"
四.802.1x認證流程
該認證流程可以參考源碼中qt工程中的若干函數實現:
wpa_supplicant\wpa_supplicant\wpa_gui-qt4\wpa_gui.pro
1.打開wpa_supplicant程序:
wpa_supplicant -B -i ens33 -f/tmp/wpa.log -c/etc/wpa_supplicant.wired.conf -Dwired
2.打開wpa_supplicant控制端口:
m_CtrlConn = wpa_ctrl_open(strFile);
m_MonitorCtrlConn = wpa_ctrl_open(strFile);
wpa_ctrl_attach(m_MonitorCtrlConn)
3.發送認證消息給wpa_supplicant程序:
CtrlRequest("SET_NETWORK ens33 identity user", reply, &reply_len);
CtrlRequest("SET_NETWORK ens33 password password", reply, &reply_len);
CtrlRequest("ENABLE_NETWORK ens33", reply, &reply_len);
CtrlRequest("LOGON", reply, &reply_len);
4.注銷登錄:
CtrlRequest("LOGOFF", reply, &reply_len);
wpa_supplicant源碼下載地址:
http://w1.fi/releases/wpa_supplicant-2.9.tar.gz
wpa_supplicant開發文檔:
http://w1.fi/wpa_supplicant/wpa_supplicant-devel.pdf
參考網站: