type
Post
status
Published
date
Jul 13, 2023
slug
summary
tags
锐捷
校园网
抓包
category
技术分享
icon
password
寻找认证服务器
通过抓包发现3个与众不同的包,下面紧接着就是锐捷认证服务器的回复包,协议开始变成
EAP协议。
接下来,我们对包的内容进行一波分析,

c8:7f:54:c9:b2:df 不是我的mac地址吗?前面也是6字节,说明前面大概率也是一个mac地址,而且是固定的(多次抓包都一致)。EPAOL协议
EAPOL (EAP On Lan) 是 EAP 在以太网上面的实现, 由802.1x定义
先来看以太网的帧格式(Ethernet II帧格式)
- type : Ethernet 帧为802.1x (EAPOL) 分配的type为 0x888e, linux中定义为 ETH_P_PAE
- data : 存放EAPOL帧
EAPOL帧格式为
- Version : 802.1x版本
- 1代表 802.1x-2001
- 2代表 802.1x-2004
- 3代表 802.1x-2010
- type : EAPOL除了可以承载EAP消息外, 还可一承载其它的EAPOL消息,该字段用于标识消息的类型
- Length : Body (数据)的长度, 如果为0, 则代表没有携带数据
- Body : EAPOL帧的数据部分
当EAPOL帧的类型为 EAPOL-Key时, 其Body的格式为
当Descriptor Type为2时, 表示Descriptor Body为EAPOL RSN key, 内容由802.11协议来定义, 见 802.11 spec 11.6.2节
EAPOL帧在二层传送时,必须要有目标MAC地址,当客户端和认证系统彼此之间不知道发送的目标时,其目标MAC地址使用由802.1x协议分配的组播地址
01-80-c2-00-00-03 ,二次认证则为01-d0-f9-00-00-03 (二次认证即已经在线了,又发起一次认证)认证服务器要求验证用户名(非在线状态/认证前不发下线包)
下图是锐捷认证服务器在EAPOL后的一个Request包(针对EAPOL的返回包,但因为他的Code是Request,所以说叫一个请求)

其中我们发现88 8e后面是01 00了,第一个01对应的是
802.1x版本号,第二个说明这个是一个EAP-PACKET了,接下来的00 05就是包长度了,其实和上面的EAPOL帧格式没什么区别。EAP基础包格式
EAP 的基础包格式如下表所示:
Code | Identifier | Length | Data |
1 byte | 1 byte | 2 bytes | variable length |
其中 Code 的分配如下表所示:
Code | Assignment |
1 | Request |
2 | Response |
3 | Success |
4 | Failure |
5 | Initiate |
6 | Finish |
基础包格式稍微进化一下,那么EAP 的 Request 和 Response 包格式如下表所示:
Code | Identifier | Length | Type | Type-Data |
1 byte | 1 byte | 2 bytes | 1 byte | variable length |
按照格式分析包
00 05是接下来数据包的长度,我们裁剪出数据包,然后使用EAP基础包格式去尝试理解一下这段包吧!包的内容是:
01 01 00 05 01- 第一个
01是Code代表的是Request的意思。
- 第二个
01是Identifier,一般固定。
00 05是Type Data的长度
01是Type,根据Type表,我们可以知道这个是请求身份验证的意思(
- 后面的Type Data就一堆
00,不用看了......
客户端发送身份认证请求
锐捷扩展数据包通用格式
是一种不携带长度且可能会被加密的一种奇怪自定义格式(可能是我见识短浅)接下来简称这种格式为RTV
格式一 不携带长度
Repeated Trait | ID(有时候没有) | Data |
4 bytes | 1 byte | 1byte |
0x00 0x00 0x13 0x11 | 0x01 | 0x06 |
格式二 带一个长度
Repeated Trait | ID(有时候没有) | Length | Data |
4 bytes | 1 byte | 1 byte | 1byte |
0x00 0x00 0x13 0x11 | 0x01 | 0x02 | 0x06 |
RTV格式加解密源代码
分析数据包(标准EAP认证数据)
为了偷懒,下面是发送用户名认证数据包的相关代码,其中不包括锐捷RTV格式的分析(后面再说)。
- 变化不大,就是包类型从EAP_START变成了EAP_PACKET
identity是你的用户名(例如12345678)
分析数据包(锐捷扩展字段数据)
Check Sum算法
随机字符串X1分析

v19的类型是QWORD,所以说这里是写了32字节的随机字符串(本质上就是把rand出来16字节,然后toHexString)