深入了解校园网802.1x认证的EAP协议(3)——联想802.1x认证细节

联想的认证协议是我写的这几个802.1x实现里面相对简单的版本,没有太多古古怪怪的信息头信息尾部。

我们学校并没有使用过联想协议的认证系统,而是受了一位网友的邀请才写的,所以我连联想官方客户端的样子都没看到过,一直是由那网友抓包后发送过来,而我猜测地将其套入到此前我写的神州数码的认证程序里面,经过几天的调试,确实能用,虽然并不完全了解认证报文的每个细节。

PT实现的联想Linux客户端项目主页:http://code.google.com/p/zlevoclient/

以下的说明是基于EAP协议过程的补充描述,如果不清楚EAP,可先读深入了解校园网802.1x认证的EAP协议(1)——EAP的总体流程

认证过程报文的细节描述:

  1. EAPOL-Start、EAPOL-Logoff
    设置长度为0的协议包头,然后紧接6个意义不明的字节(可能是版本号之类),直接复制即可:
     {0x00, 0x00, 0x2f, 0xfc, 0x03, 0x00};
  2. EAP-RESPONSE-Identity
    长度为5(头部) + username_length,无特别,跟EAP标准一致,
  3. EAP-RESPONSE-MD5_Challenge
    长度为6(头部) + 16(MD5值) + username_length,在MD5值之后,先紧接用户名,然后是4字节的本机IP地址,以及9个意义不明的字节,直接复制:{0x00, 0x00, 0x2f, 0xfc, 0x00, 0x03, 0x01, 0x01, 0x00};
  4. EAPOL-KEEP-ALIVE
    当认证成功后,需要每60秒发送一次该报文,否则会断线;
    该报文的b:EAPOL 报文类型为0xFC,帧长值为12,其携带信息的前8字节在实际中似乎是随机变化,找不出其规律,不过实际上全部设0也可;后4字节则是本机IP。

在部分版本中,如吉林大学珠海学院,每隔5分钟(可能就在第五个EAPOL-KEEP-ALIVE发出之后)服务器会重新发来EAP-REQUEST-Identity,程序需要正确应答,特别要设置各个应答报文中的e:EAP通信id。

关于服务器返回的数据包,Success和Failure通常包含有中文编码的信息,标志是,EAP报文结束后,紧接0x00002ffc(大概0x18、0x19),其后接着是一个字节的报文长度,再后就是gb2312编码的中文信息。

由于协助我测试的湖南人文科技学院的网友他们的系统是纯手工设置网卡IP的,所以我也不清楚是否有像其他品牌的协议那样有动态静态IP位之类的信息位,如果发现这个版本的程序不能通过认证,可以自己抓包分析,或邮件联系PT。

文章分类 Programming, Unix/Linux 标签: , , ,
8 comments on “深入了解校园网802.1x认证的EAP协议(3)——联想802.1x认证细节
  1. imagelife说道:

    thx PT!

  2. LI说道:

    楼主能编一个苹果系统可以使用的神州数码客户端吗??
    跪求!!!!!谢谢!

  3. BOYPT说道:

    @li 其实我也想过,只是无奈没有测试环境阿;移植linux版唯一的障碍是如何获得网卡的mac地址,Linux版里面可以用ioctl的系统调用获得,但是之前有人在OSX下编译时候报告说不支持。

    建议MAC的用户研究一下OSX的API,只需要把init_info里面获取MAC那仅仅几行的代码替换就可以了。

  4. Insion说道:

    有个笨办法用ifconfig然后用c格式化输出mac地址;
    还有这个帖子你可以看看,是关于如何在freebsd下获取mac地址的,因为mac osx也属于bsd,我想应该方法也是雷同的.

  5. BOYPT说道:

    原来是跟bsd一系的,有空我研究研究

  6. afeiraul说道:

    正在研究802.1X协议,看了802.1X-2004介绍了很多状态机,其中Supplicant端有两个重要的状态机是PAE前端和backend后端状态机,同时RFC4137定义了EAP的状态机,EAPoL和EAP分开两个状态机来工作可以理解,但是一个EAPoL内部为什么分为两个状态机来工作呢?

  7. BOYPT说道:

    呵,其实我没看过完整的802.1X-2004,因为程序用不着这么详细的定义;你的意思是一个完整报文里面包含了三个自动机?

    可能是针对较复杂的EAPOL的情况下使用吧~~比如同时有多个不同Version的的情况?

  8. afeiraul说道:

    不知道你对XSupplicant有没有研究,如果有研究希望可以互相交流一下!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*