新的客户端似乎与drcom有较大的联系,我根据身在现场的同学抓的包,给出一点点分析,并基于scapy写出了一个简单的认证客户端(希望能用)。
1. Start
Start包很简单,向固定的MAC地址(01:80:c2:00:00:03)发送请求。
2. Response Identity
在接收到服务器的Request Identity后,需要回复 用户名 + 0x00 0x44 0x61 0x00 0x00 + 客户端IP地址(4字节)。
3. Request MD5 Challenge
该协议的特别之处在于,Request MD5 Challenge时,会提供16字节的信息,需要加入到下一步的MD5运算中。客户端程序必须把该部分提取出来以备用。如红框所示。
4. Response MD5 Challenge
需要给服务器发送MD5 + 用户名 + 0x00 0x44 0x61 0x2a 0x00 + 4字节IP地址。
其中,MD5的计算公式为[1]:
MD5-Value = MD5(Identifier + Password + MD5-Challenge)
Identifier和MD5-Chanllenge均由EAP-Request / MD5-Challenge给出。
5.UDP
在802.1X认证之外,还有UDP的认证。这个相比1X而言复杂不少。在不少人的共同努力下,应该是掌握了它的奥妙所在。
根据以上几点,我在pyscutclient的基础上修改出了pyscutclient_drcom,目前该程序有待测试。
参考文献
- Shindo. 哈尔滨工业大学(威海)校园网认证协议分析[EB/OL]. http://sdou.net/2016/05/hitwh-authentication-protocol-analysis/ , 2016-05-06.
- drcoms. https://github.com/drcoms/drcom-generic/blob/master/analyses/d_keep_alive2.md
- 华工路由器群
发表评论