本来以为这个东西只有在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 WPA-PSK): 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驱动中会调用wi