无线局域网开发
文章平均质量分 89
分享无线局域网相关的东西,包括无线原理,无线工具,无线开发等内容,从硬件,驱动到软件三个层面进行分析。
奔跑的路
这个作者很懒,什么都没留下…
展开
-
hostapd wpa_supplicant madwifi详细分析(十五)——supplicant扫描结果排序规则
int (*compar)(const void *, const void *) = wpa_scan_result_compar;qsort(scan_res->res, scan_res->num, sizeof(struct wpa_scan_res *),compar); // qsort函数介绍static int wpa_scan_result_compar(con原创 2017-03-25 18:15:59 · 1981 阅读 · 0 评论 -
802.11协议笔记(二)——PHY物理层的帧格式(802.11b)
这篇文章主要介绍下图中layer1物理层的内容前面有介绍,MPDU进入PLCP层以后,它的名字就换成了PSDU,PSDU加上前导码和PLCP头部以后,就形成了PPDU。在传输的过程中,发送端通过向接收端发送PLCP前导码来提醒对方。前导码是一序列0/1比特串,用于同步即将发生的传输。在802.11-2007 协议中有定义三种类型的前导码格式:the Long PPDU format,原创 2016-11-20 21:24:15 · 51247 阅读 · 1 评论 -
802.11协议笔记(一)——基本概念
首先简单回顾一下IOS模型的7层结构:Layer 7: ApplicationLayer 6: PresentationLayer 5: SessionLayer 4: TransportLayer 3: NetworkLayer 2: Data-Link LLC sublayer MAC sublayerLayer原创 2016-11-20 11:17:35 · 20639 阅读 · 7 评论 -
无线局域网安全(四)————身份认证之4路握手
前面我们了解了三种加密方式,WEP、TKIP和CCMP,他们分别使用不同的算法给需要传送的MSDU进行加密以后,封装在MPDU中进行传送,然后在接收端对数据进行解密,以达到安全完整传送数据的目的。不管使用哪种加密方式,这都是在STA完成了身份认证以后进行的动作,也就是说在确认了STA获得足够的权限以及拥有正确的密钥以后才能进行安全的、完整的、受保护的的通信。那么对于一个新接入的STA,我们怎么知道原创 2016-10-13 18:58:42 · 18851 阅读 · 6 评论 -
无线局域网安全(三)————CCMP加密
Counter Mode with Cipher-Block Chaining Message Authentication Code Protocol(CCMP)CCMP加密在802.11i修正案中定义,用于取代TKIP和WEP加密。CCMP使用AES快加密算法取代WEP和TKIP的RC4流算法,它也是WAP2指定的加密方式,因为AES加密算法是和处理器相联系的,所以旧的设备中可以支持WEP原创 2016-10-06 12:14:08 · 21679 阅读 · 0 评论 -
无线局域网安全(二)————TKIP加密
Temporal Key Integrity Protocol (TKIP) 临时秘钥完整性协议TKIP是用来解决WEP容易被破解而提出的临时性加密协议,它并不是802.11推荐的强制加密协议, 简单来说,TKIP主要是用来加强WEP加密,这个升级主要体现在算法上,这一点很重要,为什么这么说呢?因为使用TKIP加密,并不需要进行硬件的升级,也就是说只要你的硬件支持WEP加密,那么同时也能够支持原创 2016-10-02 15:06:41 · 22054 阅读 · 6 评论 -
无线局域网安全(一)———WEP加密
这篇文章是关于无线局域网加密的第一篇文章,所以先对无线局域网的加密做一个简单的概述。其实我们平常在使用wifi的时候,往往会用到的加密方式主要有WEP(pre-RSNA), WPA(TKIP), WPA2(CCMP-AES), 如果有个别对安全要求比较高的也会使用企业级加密(802.1x). 在最新的802.11-2010标准中,有明确的支持新的无线设备应该抛弃WEP和WPA加密方式,而且必须原创 2016-09-29 12:21:47 · 18421 阅读 · 1 评论 -
hostapd wpa_supplicant madwifi详细分析(十四)——完结篇
注:这篇文章不谈技术查看了一下《hostapd wpa_supplicant madwifi详细分析》系列文章,断断续续更新到现在,发现中间的持续时间都快要两年了。记得那时候刚毕业到公司,组长叫我看项目的无线部分代码,自己稀里糊涂的看了一个月,组长问我:vap是怎么创建的?sta和AP是怎么建立连接的?wds是怎么工作的?WPS中PIN和PUSHBUTTON的区别是什么?我们DUT中几原创 2016-08-07 17:26:22 · 4019 阅读 · 3 评论 -
hostapd wpa_supplicant madwifi详细分析(十三)——EAPOL(802.1X-2004/IEEE Std 802.1X-2010)
这篇文章主要介绍EAPOL,关于它的详细定义可以到802.1X-2004/IEEE Std 802.1X-2010两个文档里面查询。如果有阅读前面一篇文章,应该会了解EAPOL在局域网中是用来为EAP服务的,它主要用来装载EAP数据包,完成802.1x的认证过程。EAPOL也工作在LLC层,现在我们来了解一下。一、总概1.使用范围为了让无线局域网中的设备能够安全的连接通信,802.原创 2016-08-07 16:05:46 · 5844 阅读 · 0 评论 -
hostapd wpa_supplicant madwifi详细分析(十二)——EAP(RFC3748)及EAP状态机分析(RFC4137)
wpa_supplicant/hostapd程序里面的核心部分,应该要算它的状态机了,前面分析了WPS的实现过程,但是在看代码的时候,不管是加密部分还是WSC部分,都绕不过它的状态机,它就像路上的一块石头,如果不搬开它,很难继续往下走。下面是wpa_supplicant 模块结构图,红线部分是状态机模块,它就像一个桥架在那里,如果左边进来的的数据想要到右边去实现加密或者解密,就必须经过这座桥,而且原创 2016-07-28 15:02:14 · 6182 阅读 · 0 评论 -
hostapd wpa_supplicant madwifi详细分析(十一)——wps原理及实现 三
这篇文章主要整理一下关于WSC的边边角角,对一些比较重要且前面没有解释清楚的一些概念做一些补充,如果对前面两篇文章理解比较清楚,可以略过。原创 2016-07-03 12:17:07 · 11281 阅读 · 0 评论 -
hostapd wpa_supplicant madwifi详细分析(十)——wps原理及实现 二
前面对WPS交互过程有了大概的了解,现在了解一下WPS交互时帧的格式以及每个帧所携带的信息。 WPS使用802.1x和EAP传输in-band注册协议的交互信息,这些信息里面都会携带大端排序的attributes字段。这个协议都会和一个自定义的EAP method相对应。WPS不需要AP支持RADIUS,也不要求网络内包含一个认证服务器,事实上,很多具有WPS功能的AP只支持802.1x使用WPS原创 2016-07-01 15:48:01 · 13730 阅读 · 1 评论 -
hostapd wpa_supplicant madwifi详细分析(九)——wps原理及实现 一
这篇文章基于《Wi-Fi Simple Configuration Technical Specification Version 2.0.5》文档, 更详细的内容请直接参考文档,这里只将自己的想法做一些简单的记录。一、WSC的三种实现 WSC(wifi simple configuration),一看这名字就知道这个协议是用来偷懒用的,所以我将它翻译为“快速接入无线网”协议,这原创 2016-06-15 09:51:44 · 25273 阅读 · 16 评论 -
hostapd wpa_supplicant madwifi详细分析(八)——wpa_supplicant的配置文件
距离上一篇文章的更新已经将近半年了,这半年忙项目忙得几乎没有什么时间给自己积累一些东西,也没什么心思转到这边来写点东西,当一个项目放到自己身上的时候,发现并不像开发一个模块或一个功能那么简单,涉及方方面面,各种琐碎的的事情会占据大量的时间,各个功能之间的交互等等。 前面写的关于hostapd的文章都太浅显了,一般都没怎么涉及到具体的功能,只是简单的分析了一下代码的流程,然而对于实际的功能开原创 2016-05-29 09:34:43 · 8892 阅读 · 0 评论 -
hostapd wpa_supplicant madwifi详细分析(七)——hostapd整体梳理
这篇主要对hostapd这个程序做一个整体的梳理,自己也觉得前面说的都好乱,尽是一些代码的分析,过于细节了。 关于EAP状态机的转化,这里就不多说了,点击打开链接 这里可以下载原文档,知道的是自己不会比原文档写的还好的,所以就放弃了介绍状态机了。 先理解一下 struct hapd_interfaces interfaces 这个结构体对象, 这个结构原创 2014-12-23 09:16:44 · 5344 阅读 · 2 评论 -
hostapd wpa_supplicant madwifi详细分析(六)——疑问整理
1. 中断处理函数在哪里注册? 注册了哪些中断处理函数呢? 在main函数的开始,定义了一个对象: struct hostapd_interfaces interfaces 这个对象在整个程序中起到一定贯穿作用,我们来看看hostapd_global_init()中对中断注册函数的调用(这个调用其他版本也可能在别的地方): eloop_registe原创 2014-12-22 15:19:53 · 3640 阅读 · 0 评论 -
hostapd wpa_supplicant madwifi详细分析(五)——hostapd_global_run函数
main函数的前面部分做好了传入参数的处理、config文件的读取、初始化等准备工作,这里将进入最主要的部分,hostapd_global_run函数。 这里就不贴繁琐的代码了,这个函数主要分三步:1. 调用tncs_global_init完成tnc相关的初始化,这里就不详细说了2. 调用os_daemonize函数实现将该程序以后台进程运行,它主要实现过程是调用os_原创 2014-12-22 12:26:25 · 3321 阅读 · 0 评论 -
hostapd wpa_supplicant madwifi详细分析(四)——interface的初始化
前面讲了的初始,这一节将介绍interface的初始化 关于interface这个词在这里具体指的是什么,开始的时候自己也很模糊,经过多次询问和验证,个人将这个interface理解为无线网卡物理口,即我们用ifconfig打印出的wifi0和wifi1这样的接口。我们知道,hostapd的一个主要功能是将一个无线网卡切换成ap模式,让它以server端的角色运行,能够让其他无线原创 2014-12-22 08:48:55 · 5123 阅读 · 0 评论 -
hostapd wpa_supplicant madwifi详细分析(三)——hostapd_global_init()函数
一、预备知识(eap_sm、eap_method结构体)struct eap_sm { //状态机,存储eap的状态 enum { //枚举eap的各种状态 EAP_DISABLED, EAP_INITIALIZE, EAP_IDLE, EAP_RECEIVED, EAP_INTEGRITY_CHECK, EAP_METHOD_RESPONSE, EAP_METHOD_REQ原创 2014-12-19 15:40:24 · 4770 阅读 · 0 评论 -
hostapd wpa_supplicant madwifi详细分析(二)——main之for循环
欢迎转载,转载请注明出处。下面从main函数开始源代码的分析,这一篇主要对开始处的for循环介绍,里面的选项和参数的处理方式,主要依赖于命令行或者脚本调用hostapd时,传进来的参数是什么 int main(int argc, char *argv[]) { struct hapd_interfaces interfaces;原创 2014-12-19 14:23:09 · 5823 阅读 · 0 评论 -
hostapd wpa_supplicant madwifi详细分析(一)——hostapd是干嘛的
最近在学习无线,看了许多脚本和代码,虽然在整体上对这个模块实现的大致流程有了一定的掌握,但是对一些细节还不是很清楚,所以用这种方式来记录学习过程中的一些总结和体会,有理解错误或者描述不当的地方,还望有识者指正。 看代码的时候主要借鉴的是 hostapd的radius/eap server代码分析系列和源代码,里面讲的很具体,很清楚。 hostapd是干嘛原创 2014-12-19 13:46:37 · 14784 阅读 · 0 评论