wpa_supplicant学习
2019独角兽企业重金招聘Python工程师标准>>>
interface gtk makefile wrapper buffer methods
目录(?)[-]
本来以为这个东西只有在Atheros的平台上用的突然发现Ralink的平台也可以用甚至还看到还有老美把这个东西往android上移植看来是个好东西学习一下
官方的模块框图
大致流程For WPAPSK
WPAPSK配置文件的写法
编译方法
启动方法Atheros Driver
主要参数含义
源码关键函数
本来以为这个东西只有在Atheros的平台上用的,突然发现Ralink的平台也可以用,甚至还看到还有老美把这个东西往android上移植。看来是个好东西,学习一下。
官方的模块框图
一般来说很多模块可以根据需要选用的
EAP methods EAP state machine
如果你不需要支持wpa-enterprise那么这两个模块都不需要编译。
wpa_cli和GUI
这两个可以不要,直接写个控制脚本,把用户的参数变为配置文件,重启wpa_supplicant
driver event
driver event 无线驱动和本程序通讯的接口,一般高级的无线驱动都支持WEXT。就是驱动里面通过wireless_send_event把一些状态信息发到本程序处理。
driver i/f
一些ioctl接口,同样用于无线驱动和本程序之间传递信息。
EAPOL state machine
负责处理PTK 4-way HS和GTK 2-way HS
l2_package
EAPOL和pre auth都要通过这个接口收发包。
configuration
负责处理用户配置文件的模块
大致流程(For WPAPSK):
1 读取配置文件
2 初始化配置参数,驱动函数wrapper
3 让驱动scan当前所有bssid(包括wpa AP和non-wpa AP)
4 检查扫描的参数是否和用户设置的相符
5 如果相符,设置associate request ie 通知驱动进行auth assoc步骤
4 Four-way handshake for PTK
5 Two-way handshake for GTK
6 接收AP发出的指令,定期更换GTK
这个程序和madwifi通信主要通过wirelessEXT,其实就是netlink,在madwifi驱动中会调用wireless_event_send这个函数把相关的东西发到wpa_supplicant
WPAPSK配置文件的写法
一般这样写可以兼容WPA和WPA2 CCMP和TKIP
network={
ssid="myssid "
key_mgmt=WPA-PSK
proto=WPA RSN
pairwise=TKIP CCMP
psk="myasciipsk"
}
编译方法:
Makefile需要读取一个.config文件,这个文件里面包含交叉编译路径设置,模块配置选项。
参考配置文件For wpapsk madwifi
#*******************************************************
CROSS_COMPILE=/opt/mips-linux-
CC=${CROSS_COMPILE}gcc
CONFIG_DRIVER_MADWIFI=y
CFLAGS += -I../src/802_11/madwifi/madwifi
CONFIG_DRIVER_WIRED=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_BACKEND=file
#*******************************************************
启动方法(Atheros Driver):
#创建无线interface模式设置为managed
wlaconfig ath create wlandev wifi0 wlanmode sta
#设置ath0到自动模式,这样scan的时候会扫所有的频道2.4g 5g 11nagb。
iwpriv ath0 mode auto
#设置好配置文件,启动wpa_supplicant
wpa_supplicant –i ath0 –b br0 –c /tmp/supplicant.conf -B
主要参数含义:
ath0是无线interface,通过这个参数,函数就可以通过iotcl调用无线驱动中的接口。
br0 是bridge interface,EAPOL L2 package都通过这个接口收发。
-c 表示配置文件
-B daemonlise
源码关键函数
wpa_supplicant_add_iface
wpa_supplicant_init_iface
wpa_supplicant_set_driver
wpa_config_read
wpa_supplicant_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中,主要原因可以参考下面的代码。主要是收到deauth这个event和auth timeout
wpa_supplicant_event_disassoc
wpa_blacklist_add
wpa_supplicant_timeout
wpa_blacklist_add
何时会从黑名单中删除。
wpa_supplicant 扫描的结果是从madwifi中得到的,由于linux kernel里面设置了扫描buffer的大小,wireless.h中定义这个大小为#define IW_SCAN_MAX_DATA 4096,所以这个buffer很容易就溢出了,导致一些结果无法传送到wpa_supplicant,为此madwifi在扫描的时候设置了一个过滤条 件,现提取wpa的AP,再提取none-wpa的,这样改善了很多,但是通常在公司研发环境中还是很容易出现溢出。
转载于:https://my.oschina.net/u/994235/blog/164421
wpa_supplicant学习相关推荐
- (一百零二)Android O wpa_supplicant初始化学习
前言:之前在 有提及"通过 "setprop ctrl.start wpa_supplicant" 来触发init进程去fork一个子进程来完成supplicant的启动 ...
- 【安全牛学习笔记】WPS及其他工具WPS
WPS及其他工具 root@kali:~# service network-manager stop root@kali:~# airmon-ng check kill Killing these p ...
- Android Wi-Fi子系统学习笔记
一.学习目的 了解Android Wi-Fi模组的移植及调试 二.基础知识 1.wifi的两个标志: (1)无线 (2)基于IEEE802.11协议 2.Android wifi模块的三个作用 (1 ...
- 移植wpa_supplicant软件与DHCP软件解密WPA/WPA2 加密的无线网络
加qq1126137994与微信:liu1126137994 一起学习更多技术! 现在的无线网络基本都是 WPA/WPA2 加密方式的,当我们在嵌入式Linux平台要实现无线网卡连接无线网时,我们需要 ...
- 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环
目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...
- Linux学习之CentOS6下Mysql数据库的安装与配置
转自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建好j ...
- Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置
如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--Cen ...
- [Android]Android P(9) WIFI学习笔记 - HAL (1)
目录 前文回顾 前言 入口 WifiNative 初始化 打开WIFI IWifiChip IWifiCond ISupplicant 前文回顾 WIFI学习笔记 - Framework (1) WI ...
- Linux目录结构,命令,文件类型学习
2019独角兽企业重金招聘Python工程师标准>>> [toc] Linux目录结构,命令,文件类型学习 一. 系统目录结构 简述 对于目录,我们大致能够理解,像书本学的章节,每个 ...
最新文章
- 高斯混合模型图像聚类、图像生成、可视化分析实战
- 语言模型如何为大象“称”体重?斯坦福提出“尺度探测”新思路
- 清北学堂模拟赛d5t4 套路
- Net 4.0 Parallel 编程(六)Task(下)
- VTK:几何对象之OrientedArrow
- 牛客 - 焦糖布丁(线性基+博弈)
- 编程语言里函数方法类型检查的重要性
- CMake 入门与进阶
- SQL Tuning Advisor使用实例
- Javascript设计模式(五)代理模式
- Linux的WIFI架构,Linux Wireless架构总结
- MD5文件加解密工具类 MD5Utils
- 京东云的区块链“经”
- SAP UI5 在 PC 端浏览器和移动设备使用摄像头进行条形码扫描的几种解决方案介绍
- PROFINET转EtherCAT网关方案设计
- 一位软件实施工程师的自述(转)
- Python爬虫:爬取某鱼颜值主播图片并保存到本地升级版!
- matplotlib 绘制三角函数图像
- 时序图神经网络总结(1)
- GBA程序开发入门1
热门文章
- C#中如何得到机器的IP地址
- 如何有效的使用C#读取文件
- 如何在asp.net中动态生成验证码
- Windows自动启动程序的十大藏身之所(转载)
- 一种二维条码图像处理流程
- 用计算机辅助实验系统做验证牛顿第三定律,用计算机辅助实验系统(
- java uiautomation_Java UiAutomation類代碼示例
- mysql语句生成工具_强烈推荐一款MySQL语句优化辅助工具,值得收藏
- python如何创建不同元素的矩阵_python – 如何在数据帧中创建矩阵元素的数...
- 1 23 456c语言,2014年计算机二级考试C语言模拟题(1)