linux下使用wpa_supplicant实现802.1x认证功能


学习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

参考网站:

https://w1.fi/wpa_supplicant/devel/ctrl_iface_page.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM