环境介绍:
认证服务器 | 192.168.13.253 |
AC | 192.168.13.252 |
抓包过程:
1、安装wireshark,宁盾wifi默认安装路径下${DKEY AM }/Utilities目录下有wireshark安装包,直接安装即可,具体安装过程略。2、添加Portal协议分析插件,具体操作过程参见附件 portal协议分析插件.zip
3、运行wireshark选取网卡,例我的认证服务器所使用的网卡为本地链接;如图:
4、过滤portal||radius报文:
Portal 认证流程
报文字段说明
Ver
Ver字段是协议的版本号,长度为 1 字节,目前定义的值为 0x01。
Type
Type字段定义报文的类型,长度为 1 字节,目前其值的定义如表6-1。
报文类型
Type |
值 |
方向 |
含义 |
REQ_CHALLENGE |
0x01 |
Client----->Server |
Portal Server 向AC设备发送的请求Challenge报文 |
ACK_CHALLENGE |
0x02 |
Client<-----Server |
AC设备对Portal Server请求Challenge报文的响应报文 |
REQ_AUTH |
0x03 |
Client----->Server |
Portal Server向AC设备发送的请求认证报文 |
ACK_AUTH |
0x04 |
Client<-----Server |
AC设备对Portal Server请求认证报文的响应报文 |
REQ_LOGOUT |
0x05 |
Client----->Server |
若ErrCode字段值为0x00,表示此报文是Portal Server向AC设备发送的请求用户下线报文;若ErrCode字段值为0x01,表示该报文是Portal Server发送的超时报文,其原因是Portal Server发出的各种请求在规定时间内没有收到响应报文。 |
ACK_LOGOUT |
0x06 |
Client<-----Server |
AC设备对Portal Server请求下线报文的响应报文 |
AFF_ACK_AUTH |
0x07 |
Client----->Server |
Portal Server对收到的认证成功响应报文的确认报文; |
NTF_LOGOUT |
0x08 |
Server --> Client |
用户被强制下线通知报文 |
REQ_INFO |
0x09 |
Client --> Server |
信息询问报文 |
ACK_INFO |
0x0a |
Server --> Client |
信息询问的应答报文 |
Pap/Chap
Pap/Chap字段定义此用户的认证方式,长度为 1 字节,只对Type值为 0x03 的认证请求报文有意义:
Chap方式认证---值为0x00;
Pap 方式认证---值为0x01;
Rsv
Rsv目前为保留字段,长度为 1 字节,在所有报文中值为 0;
SerialNo
(1) SerialNo字段为报文的序列号,长度为 2 字节,由Portal Server随机生成,Portal Server必须尽量保证不同认证流程的SerialNo在一定时间内不得重复,在同一个认证流程中所有报文的SerialNo相同;
(2) Portal Server发给AC设备的报文
a、 由Portal Server发出的Type值为1、3的请求报文其SerialNo都是随机生成数;
b、 由Portal Server向AC设备发出的Type值为5的(REQ_LOGOUT)报文其SerialNo值分两种情况:当ErrCode为0 时(请求用户下线报文),SerialNo值为一个随机生成数;当ErrCode为1时,SerialNo值可能和Type值为1或3的报文 (请求Challenge超时, 或请求认证超时)相同,具体要看是请求Challenge超时还是请求认证超时;
c、 由Portal Server向AC设备发出的认证成功确认报文(Type值为7的报文)SerialNo和其发出的相应请求报文的SerialNo相同;比如对于Type值为7的报文其SerialNo值和Type值为3的请求认证报文相同;
(3) 每一个由AC设备发给PortalServer的响应报文的SerialNo必须和PortalServer发送的相应请求报文的SerialNo一样,否则PortalServer会丢掉从AC设备发来的响应报文; 比如Type值为2的报文其SerialNo值必须和Type值为1的报文相同,Type值为4的报文其SerialNo值必须和Type值为3的报文相同,Type值为6的报文其SerialNo值必须和Type值为5的报文相同。
ReqID
(1) ReqID字段长度为 2 个字节,由AC设备随机生成,尽量使得在一定时间内ReqID不重复。
(2) 在Chap认证方式中:
a、 AC设备在Type为2 (ACK-CHALLENGE) 的请求Challenge响应报文中把该ReqID的值告诉Portal Server;
b、 在Type值为3、4、7 ( REQ-AUTH, ACK-AUTH, AFF-ACK-AUTH ) 的报文中ReqID字段的值都和Type值为2的报文中此字段的值相同;
c、 在Type值为 5 (REQ-LOGOUT) 的报文中,若报文表示请求Challenge 超时则此字段值为0 ;若报文表示请求认证超时则此字段值和Type值为2 (ACK-CHALLENGE)的报文中此字段的值相同;
(3) 在Pap认证方式中,此字段无意义,其值为0;
(4) 在Type值为 5(REQ-LOGOUT) 的报文中,若报文表示请求下线时则此字段值为0 ;
(5) 在Type值为1、6 (REQ-CHALLENGE , ACK-LOGOUT) 的报文中,该字段均无意义,值都为 0;
UserIP
UserIP字段为Portal用户的IP地址,长度为 4 字节,其值由Portal Server根据其获得的IP地址填写,在所有的报文中此字段都要有具体的值;
UserPort
UserPort字段目前没有用到,长度为 2 字节,在所有报文中其值为0;
ErrCode
ErrCode字段和Type字段一起表示一定的意义,长度为 1字节,具体如下:
(1) 对于Type值为1、3、7的报文,ErrCode字段无意义,其值为0;
(2) 当Type值为 2 时:
ErrCode=0,表示AC设备告诉PortalServer请求Challenge成功;
ErrCode=1,表示AC设备告诉PortalServer请求Challenge被拒绝;
ErrCode=2,表示AC设备告诉PortalServer此链接已建立;
ErrCode=3,表示AC设备告诉PortalServer有一个用户正在认证过程中,请稍后再试;
ErrCode=4,则表示AC设备告诉PortalServer此用户请求Challenge失败(发生错误);
(3) 当Type值为 4 时:
ErrCode=0,表示AC设备告诉PortalServer此用户认证成功;
ErrCode=1,表示AC设备告诉PortalServer此用户认证请求被拒绝;
ErrCode=2,表示AC设备告诉PortalServer此链接已建立;
ErrCode=3,表示AC设备告诉PortalServer有一个用户正在认证过程中,请稍后再试;
ErrCode=4 ,表示AC设备告诉PortalServer此用户认证失败(发生错误);
(4) 当Type值为 5 时:
ErrCode=0,表示此报文是Portal Server发给AC设备的请求下线报文;
ErrCode=1,表示此报文是在Portal Server没有收到AC设备发来的对各种请求的响应报文,而定时器时间到(即超时)时由PortalServer发给AC设备的报文;
(5) 当Type值为 6 时:
ErrCode=0,表示AC设备告诉PortalServer此用户下线成功;
ErrCode=1,表示AC设备告诉PortalServer此用户下线被拒绝;
ErrCode=2, 表示AC设备告诉Portal Server此用户下线失败(发生错误);
(6) 对Type为REQ_INFO时,ErrCode无意义,其值为0;
(7) 对Type为NTF_LOGOUT时,ErrCode含义如下:
ErrCode |
含义 |
0 |
下线 |
(8) 对Type为ACK_INFO时,ErrCode含义如下:
ErrCode |
含义 |
0 |
处理成功,但不表示全部消息都被获取了,有多少信息被获得应通过属性来判断,详见下文 |
1 |
功能不支持,表示设备不支持这一功能 |
2 |
消息处理失败,由于某种不可知原因,使处理失败,例如询问消息格式错误等。 |
本文转自 msft 51CTO博客,原文链接:http://blog.51cto.com/victorly/1845786,如需转载请自行联系原作者