一点深入理解锐捷认证过程的建议
Closed this issue · 18 comments
当年魔改的教程一直没有更新,导致后来的一些朋友继续在用的曾今的方法魔改 mentohust, 我感到十分惭愧。
有更好地方法深入理解锐捷认证的过程, 魔改,无法深入理解EAP认证协议!
下面是我的一些心得,与你分享。
1、前往 PT桑 的博客。 “深入了解校园网802.1x认证的EAP协议(1)” 一文对 EAP 认证过程有十分详细的解释。对照 Wireshark 抓到的锐捷认证包, 一个 byte 一个 byte 地与文章中剖析的报文结构去对比, 将会快速地理解 EAP 认证时每个包的内容。
2、前往 PT桑 的Github, 看看他是如何实现一个第三方锐捷客户端的。 PT桑 的编程能力很强, 代码逻辑清晰, 容易看懂。
3、 EAP-MD5-CHALLENGE 包中,三段加密字段的计算,目前我依然沿用 mentohust-V4 的加密算法。 为了计算出三段加密结果,需要移植大量 mentohust 中的.c文件才能实现, 移植过程很简单,但程序整体臃肿。加密的部分是最核心的部分,深深佩服 HustMoon.我过段时间会深入研究。
以上。
@ShanQincheng 不知为什么会:认证成功了,但是过了6分30秒后,查看网络中心显示:认证超时被强制下线得,每次认证超时都是每6分30秒
我现在无法在我校网络中心查询 “认证失败日志”...没法模拟你遇到的情况。
我猜测,可能是心跳包的问题。
- 一段时间后没有定时发送了。
- 发送了几个心跳包之后,计算结果出现问题了。
你可以用 Wireshark 持续抓包,看看心跳包是否在定时发送,心跳包中的数据是否有变化。
@lifeaAngle
心跳包还有计算结果的? 计算什么的? @ShanQincheng
奇怪,github issues留言有问题啊, 在邮件里和网页上收到的信息都不一样。
重新发这两个链接
PT 桑博客链接 http://blog.ptsang.net/details_about_802_1x_in_campus_authentication_1
PT 桑锐捷程序Github链接 https://github.com/pentie/zruijie4gzhu/
确实是要计算的。 计算序号, 心跳包 1 , 心跳包 2 ...
mentohust代码中,
void fillEchoPacket(u_char *echoBuf)
函数就是在计算并填充心跳包。
你说的发送第30个的时候,定时变化了。
我没有理解这句话的含义, 是没有第 31 个包了吗, 还是第 31 个包发送时间延迟或是提前了?
看错了,我设置心跳20秒,是每20秒发送一次,但是每次都是每6分30秒 心跳超时;你说的void fillEchoPacket(u_char *echoBuf)这句在哪个文件呢? @ShanQincheng
Gihub ‘shanzhaozhen/mentohust_for_zqu’ Repository 页面, 最上方,输入 fillEchoPacket, 回车搜索。
echokey 和 echono 是在哪个包得到的? @ShanQincheng
一样的查找方式哦。
-
搜索 echokey, 可以看到 echokey 是在
void getEchoKey(const u_char *capBuf); /* 获取EchoKey */
函数中被赋值的。 -
搜索 getEchoKey, 可以看到 getEchoKey 函数在 mentohust.c 文件中,在登录成功后被调用的哦, 因此 echokey 是在 EAP_SUCCESS 包中得到的。
else if (buf[0x0F]==0x00 && buf[0x12]==0x03) { /* 认证成功 */
printf(">> 认证成功!\n");
fflush(stdout);
failCount = 0;
if (!(startMode%3 == 2)) {
getEchoKey(buf);
showRuijieMsg(buf, h->caplen);
}
-
同理搜索 echono, 可以看到 echono 是直接赋值的,不是从某个包中得来的。
@ShanQincheng 🆗,谢谢,我研究一下
@ShanQincheng 哎,没学过c语言,有些看不懂😭
我更建议去看看 minieap 的代码。
对于分析网络协议,我认为应该逆向分析数据包到底是怎么生成出来的,搞清楚生成的算法。这方面 minieap 的代码写的很好!
爱莫能助哦 @lifeaAngle
我用minieap和mentohust都是能认证,但是也是不能心跳,心跳包按时发送,也会变换,也是在6分多钟被下线
@nature2608 minieap 的心跳代码应该也是有点问题的。不过我校是不需要心跳的,所以我没法测试了。
@ysc3839 我可以给你测试,只是我不知道什么问题
我是6分钟就掉线重连了要怎么改呢