玩转「Wi-Fi」系列之wpa_supplicant 目录介绍(八)

旧巷老猫 提交于 2019-12-01 15:35:59

源码结构框

之后的文章基本都是wpa_supplicant源码分析的介绍, wpa_supplicant 一个庞大的开源项目, 最新版本的为2016-10-V2.6。据目前来开,WiFi相关应用层的操作基本都是wpa_supplicant 的封装,包括Android 。初步统计一下,wpa_supplicant 源文件个数 552个, 20万行代码。 分析起来工作量巨大,这条路非常难走,请读者做好准备。

wpa_supplicant 的源码目录介绍

├── ap       // hostapd 相关功能        
├── common    // 通用函数 
├── crypto     // 各种加密功能
├── drivers // 对接底层驱动,包括 wext 和nl80211
├── eap_common // eap 相关
├── eapol_auth
├── eapol_supp
├── eap_peer
├── eap_server
├── fst // fst 模块
├── l2_packet // 链路层的访问封装
├── p2p // WiFi P2P协议,
├── pae // ieeee802 协议
├── radius // RADIUS:Remote Authentication Dial In User Service 消息处理
├── rsn_supp // RSN协议, Robust Secure Network,强健安全网络),即通常所说的WPA2安全模式,是WPA 的第二个版本
├── tls // tls 协议
├── utils // 包括 RFC1341编解码, 通用的辅助函数, 双链表, UUID, debug, epool
└── wps // wps 功能的实现

主要文件详解

核心功能

通用功能

wpa_supplicant 使用通用的帮助函数,其中一些与hostapd共享,文件如下:

加密功能

  • md5.cmd5.h MD5(如果包含TLS的支持则用加密库替换)HMAC-MD5(用于消息真实性验证的密钥校验和)
  • rc4.c和rc4.h RC4(广播/默认密钥加密)
  • sha1.csh1.h SHA-1(如果包含TLS的支持则用加密库替换) HMAC-SHA-1(用于消息真实性验证的密钥校验和)
    PRF-SHA-1(伪随机(密钥/随机数生成)函数) PBKDF2-SHA-1(ASCII共享密码)T-PRF (for EAP-FAST) TLS-PRF (RFC 2246)
  • sha256.c sha256.h SHA-256(如果包含TLS的支持则用加密库替换)
  • aes-wrap.c, aes_wrap.h aes.c AES(如果包含TLS的支持则用加密库替换)采用128位KEY的AES密钥包装算法
    RFC3394(广播/默认密钥加密) One-Key CBC MAC (OMAC1)哈希AES-128,AES-128 CTR模式加密, AES-128 EAX模式加密/解密,AES-128 CBC
  • crypto.h加密库封装的定义
  • crypto_openssl.clibcrypto的封装函数 (OpenSSL)
  • crypto_internal.c 内部加密实现的封装函数
  • crypto_gnutls.c libgcrypt的封装函数(used by GnuTLS)
  • ms_funcs.c ms_funcs.h MSCHAPV2 和 LEAP 参考函数
  • tls.h TLS库封装的定义
  • tls_none.c不包括TLS功能的情况下,TLS库封装的虚拟实现
  • tls_openssl.c 用于openssl的TLS库封装器
  • tls_internal.c 用于内部TLS实现的TLS库
  • tls_gnutls.c 用于GnuTLS的TLS库封装器

TLS 库

配置

控制界面

wpa_supplicant有一个控制界面可以用来获取状态信息和管理来自外部程序的操作.一个命令行界面的例子(wpa_cli)和GUI(wpa_gui)的接口包含在wpa_supplicant分发中

EAP peer

EAPOL supplicant

Windows 端口

测试程序

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!