8021x认证以及portal认证的参考资料

2023-05-16

最近几个月一直在阅读和认证相关的东西,到如今,也基本上将认证的流程摸得比较清楚了,所以在这里写一篇文章,记录一下自己的心得,同时也给希望了解这些认证的同学一些参考资料。(说实话,在没有别人的帮助下,自己一个人去琢磨各种代码是很痛苦的一件事情,我就是这么过来的。)

认证的本质

简单一点来说,所谓认证,指的是控制终端(sta)的访问权限,在sta没有通过认证的情况下,不让其访问网络资源,只有当sta通过了认证的情况下,才放通其访问权限。
因此,认证的程序一般是跑在交换机,ap,或者网关上的。怎么样来控制sta的访问权限,方法多的是,在通用的linux上面,可以用iptables,在交换机上面,可以通过acl规则来控制,当然,你也可以写个驱动,自己来抓包什么的。
关于怎么控制sta的访问权限,这不是我们的重点,我们也只需要将相关的控制抽象成一个函数,比如:

bool enale_sta_access(u8 *mac, bool enable);

即可。

认证更为复杂的点在于如何判断是否放通这个sta的流量。

现在比较常用的判断方法主要有两个,一个是portal认证,另外一个是8021x认证。
我们连接一个陌生的开放的wifi的时候,往往一打开浏览器就会被重定向到一个认证的网页,这就是portal认证,8021x的话,更直观一点就是,连接到了wifi之后,你还需要输入用户名和密码,才能上网。

不光是无线,通过以太网连接的有线也可以通过这两种方式来控制终端流量。

8021x认证

当然,首先最为官方的资料是rfc3748以及rfc 437以及IEEE Std 802.1X-2004/802.1X-2010。
你要是一上来就能啃下上面的几个文档,我敬你是条汉子。

事实上,上面的几个rfc文档相当晦涩难懂。我的建议是,如果你实在感到困惑,可以去翻一翻上面的文档。

8021x的实现最出名的,当属hostapd,作者写这篇文章的时候,hostapd已经升级到了2.8版本了,你要是直接翻阅2.6版本的代码的话,估计有股想死的冲动。对于hostapd来说,做为8021x认证的服务端只是其中非常小的一部分功能而已。它的代码来还杂糅了radius server,加密,解密等功能。代码写得非常长,而且可供参考的资料比较少。

我个人并不是很推荐大家直接从hostapd 2.x开始看,我推荐大家直接从hostapd的最初版本开始读,也就是hostapd 0.0.1版本,这个版本代码量并不是很多,不到1w行,但是麻雀虽小,五脏俱全,它完整的实现了8021x服务端的相关功能(不包含radius serv相关功能。),而且没有其他太多冗余的功能,而且8021x的几个状态机的实现和最新版本的区别并不是很大,可以说,是最值得研究的一版实现。但是很遗憾,这个版本在大多数网卡上都跑不起来,也就是说,可能你没有办法通过调试的方法来追踪代码了。

hostapd最难以理解的,就是那几个状态机了,但是其实不难,我这里推荐几份个人认为比较好的资料,第一份是一篇硕士论文:
802.1X协议研究与实现 叶敏 西南交通大学
好歹是一篇毕业论文,里面介绍8021x的知识还是相当到位的,不光服务端的几个状态机,客户端的几个状态机都讲的比较详细和清楚。我就是读了这篇论文,然后跟着论文的思路去读实现,发现如出一辙。强烈推荐。

接下来是一本书的相关章节:
深入理解android:wi-fi、nfc和gps卷
可以只关注里面关于eapol的相关章节。

接下来是一些博文:
https://blog.csdn.net/lee244868149/column/info/wlan

至于各种报文相关的资料,如eapol报文,可以自己去搜索。

读完了0.0.1的源码,可以尝试去读一下最新的实现,你会发现,这东西其实都是严格遵循rfc的,实现大同小异。
上面的资料以及hostapd 0.0.1版本源码的阅读笔记我都放到了这个链接里面:
链接: https://pan.baidu.com/s/139T2VbFA8SiXyyqMdteVMw 提取码: e1ts
上面链接如果失效的话,可以在这里下载:
https://download.csdn.net/download/lishuhuakai/11349012

portal认证

这个,我个人推荐一份开源代码供参考,那就是wifidog,这份实现并不是很复杂,但是说明了问题。
在读wifidog的源码之前,简易可以先了解一下iptables,下面是比较好的参考资料:
http://www.zsythink.net/archives/category/%e8%bf%90%e7%bb%b4%e7%9b%b8%e5%85%b3/iptables/

然后更多相关资料可以参考这里:
http://www.wifidog.pro/

总体来说,这份代码比较简单,真正应用到实际生产生活的,应该都是在这份代码的基础上魔改的。

这份代码比较糟心的一点是,原来的几个开源portal任务服务器的代码全部都失效了,可能你读代码的时候,会面临着没有portal认证服务器可用的地步。

wifidog源代码的阅读笔记我都放在了下面的连接之中:
链接: https://pan.baidu.com/s/1X8o6rJ9qamUEyvVcyf0pzA 提取码: sd82

祝君好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

8021x认证以及portal认证的参考资料 的相关文章

随机推荐

  • Android源码之“应用程序界面“分析一( 从settings开始)

    Android源码之应用程序界面分析一 xff08 从settings开始 xff09 xff1a 一 预热 xff1a 当我们点击 34 设置 gt 应用程序 中时 xff0c 会出现应用程序的列表 xff0c 而且 xff0c 有 所有
  • 基础数论算法(⑩) Catalan数与Stirling数

    严格的说 xff0c 这一节已经脱离了数论的范畴 数学真tm开心啊 xff0c 我不想打代码了 Catalan数 Catalan数的公式 Catalan数的递推公式 xff1a f n 61 n 1 i 61 0 f i f n i 1 f
  • image打包规则

    本文说的打包是指在aosp中用make j8编译后 xff0c 把自己需要的文件打包到system img中 这里又两种情况 xff0c 第一种是apk so是第三方提供的 xff0c 已经编译好了 xff0c 只要打包到system im
  • 使用Nginx实现反向代理

    一 代理服务器 1 什么是代理服务器 代理服务器 xff0c 客户机在发送请求时 xff0c 不会直接发送给目的主机 xff0c 而是先发送给代理服务器 xff0c 代理服务接受客户机请求之后 xff0c 再向主机发出 xff0c 并接收目
  • Windows下实现C++ 连接ActiveMQ

    文章目录 1 什么是ActiveMQ 2 能用来做什么 xff1f 3 支持的消息类型4 本地安装ActiveMQ服务4 1 下载地址4 2 启动4 3 配置文件activemq xml 5 C 43 43 实现连接ActiveMQ5 1
  • 从猿六年---C++笔试\面试的不成熟小建议来啦

    文章目录 前言 背景面试流程资料总结 刷题指南个人经验总结寄语 前言 背景 本人情况 xff0c 2014年毕业 xff0c 前两年做的更多的是量化分析岗 16年转的C 43 43 开发 xff0c 满打满算也有6年多C 43 43 开发经
  • spring框架学习(一)

    1 xff0c 什么是 spring 框架 spring 是 J2EE 应用程序框架 xff0c 是轻量级的 Io C 和 AOP 的容器框架 xff0c 主要是针对 java Bean 的生命周期进行管理的轻量级容器 xff0c 可以单独
  • quagga相关代码的阅读

    最近的工作涉及到了rip和ospf两个相关的协议 xff0c 虽然仅仅是修两个bug xff0c 但是个人还是对这两个协议是如何实现的产生了很浓厚的兴趣 因此 xff0c 就抽了一段时间读了一下quagga的源码 相比于我之前读的ovs相关
  • 关于linux内核

    内核是一个让人既爱又恨的东西 读书的时候 我就一直就想读一下内核的源码 但是那个时候真的只能说基础薄弱 而且从来没有接触过那么大的一个项目 不知从何入手 所以这个计划就一直被搁浅 我曾经跟着公开课鼓捣过好几份内核源码 但是那些源码只是玩具一
  • 如何在ubuntu下安装vmware-tools?

    用vmware虚拟机安装了ubuntu之后 xff0c 为了实现更加强大的功能 xff0c 比如说直接从windows主机拖文件进入ubuntu xff0c 以及加强ubuntu的性能 xff0c 我们一般都要安装vmware tools
  • BW:数据源抽取机制(这篇是以前的笔记,写得很差,有不少错的地方,留着给自己看)

    题记 xff1a 忽然想到这么个问题 xff0c 后勤数据源和非后勤数据初始化有何区别 xff0c 然后进行周边的拓展 xff0c 所以就形成了下文 大部分知识源于 TBW350 和 SAP SDN 对数据源抽取机制的深入探讨 一 什么数据
  • 理发师问题

    理发师问题 xff1a 一个理发店由一个有几张椅子的等待室和一个放有一张理发椅的理发室组成 1 xff0e 若没有要理发的顾客 xff0c 则理发师去睡觉 xff1b 2 xff0e 若一顾客进入理发店 xff0c 理发师正在为别人理发 x
  • 简易HTTP代理的实现

    编写一个简易的HTTP代理服务器 xff0c 步骤其实很简单 xff1a 1 设置一个监听套接字gListen Socket 2 每当接受到客户端的请求之后 xff0c 我们构建一个新的线程来继续监听客户端的请求 xff0c 然后原线程处理
  • error C4430: 缺少类型说明符 - 假定为 int....的一种情况的解决方法

    这段时间用VS2013写代码的时候 xff0c 一不小心就出现了这个提示 xff0c 这个问题困扰了我一段时间 xff0c 不过总算解决了 xff0c 这里记录一下 xff01 我这里先描述本人碰到的问题 xff1a 正如上图所见 xff0
  • 编辑代码或者文档时光标变成了一闪一闪的方块怎么处理?

    敲代码的时候 一不小心 就会遇到这种情况 解决办法是按一下insert键即可解决 xff0c 笔记本上的Ins insert缩写 键 根据百科上的说法是这样的 xff1a 插入键 xff08 Insert key xff0c 缩写INS x
  • 自绘控件时添加LBS_OWNERDRAWFIXED风格,离奇报错的解决方案!

    在自绘CListBox的时候本人遇到过一件很头痛的事情 xff0c 当然 xff0c 这点小问题对于大牛来说 xff0c 压根不屑一顾 xff0c 可是初学者遇到的话 xff0c 一时半会还真没什么办法解决 自绘控件很简单 xff0c 按照
  • 关于按字寻址和按字节寻址的理解

    我们先从一道简单的问题说起 xff01 设有一个1MB容量的存储器 xff0c 字长32位 xff0c 问 xff1a 按字节编址 xff0c 字编址的寻址范围以及各自的寻址范围大小 如果按字节编址 xff0c 则 1MB 61 2 20B
  • 时钟周期,机器周期,指令周期的区别

    时钟周期 时钟周期也称为振荡周期 xff0c 定义为时钟脉冲的倒数 xff08 时钟周期就是单片机外接晶振的倒数 xff0c 例如12M的晶振 xff0c 它的时钟周期就是1 12us xff09 xff0c 是计算机中的最基本的 最小的时
  • 信息安全——ELGamal数字签名方案的实现

    ELGamal数字签名方案的实现 1 xff0e 问题描述 为简化问题 xff0c 我们取p 61 19 g 61 2 私钥x 61 9 则公钥y 61 29 mod 19 61 18 消息m的ELGamal签名为 r s 其中r 61 g
  • 8021x认证以及portal认证的参考资料

    最近几个月一直在阅读和认证相关的东西 xff0c 到如今 xff0c 也基本上将认证的流程摸得比较清楚了 xff0c 所以在这里写一篇文章 xff0c 记录一下自己的心得 同时也给希望了解这些认证的同学一些参考资料 说实话 xff0c 在没