学习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
参考网站: