用Socket进行华科校园网认证,解决某些设备(ESP32)连接问题。
登录华科校园网,我用Socket
导语:
找一个华科学生问一问,学校的网络怎么样?得到的大多数是负面回答。其实不论是从覆盖区域、网络稳定性、还是速度来说,华科做的都还是可以的(24:00断网除外)。可是有一点我从进校以来就一直不爽,那就是校园网的认证方式是有线锐捷+无线web页面组合,并且无线网不能输入MAC来指定无感认证设备。真的是非常的安(má)全(fàn)啊!
这就意味着像esp32这类MCU没法使用无线网,特别是大一学生不能开通有线也没法装路由器,当时想用esp32做点东西的我十分郁闷。我从来到华科的第一天就想搞它了。使用Socket直接模拟网页认证,让esp32也能直接联网。
补充 :
做完之后也看了网上类似的博客,其他学校的同学也用Socket进行过类似的认证,可大部分没有提及跳转重定向和加密等重要部分,而且也都比较简短,没有分析整个认证过程,所以这一篇就尽量详细的还原整个过程,并且使用ESP32+micropython进行测试通过。所以,多图预警。工具 :
FireFox浏览器、WireShark、Python3
目录
- 登录华科校园网,我用Socket
- 导语:
- 补充 :
- 工具 :
- 0x00 观察
- 登录过程
- 页面后台
- 0x01 尝试
- 网络监控
- 以为成功了?
- 远远没有!
- 0x02 调试
- 流程分析
- 1. document.location.search
- 2. 隐藏的文本框
- 3. passwordmac和encryptedpassword()
- 4. 回调处理
- 分析结果
- 流程分析
- 0x03 重定向
- 0x04 整合
- 0x05 测试
- ESP32测试
- 0x06 总结
- 导语:
0x00 观察
登录过程
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIx0DciV2dmADM30zd-cmbw5CRzUCRzUydaVnQux0drR1T3VEVNp3ZU1kMBpnT3VkaNdXSUxEbkdVW0xmMM5WMXFmdwIjYqVTejpWNXRWNsdkYoVzUhhGayoVdGdUY6FTaipWM5Nme50GTzljMidXM5lFcChFTshnMZBnUuNGa5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.png)
这就是认证页面,在手机端上的模样与电脑端大同小异。一般我们输入正确的用户名(学号)、密码再点击按钮就能跳转到认证成功的页面上去了:
一般的,我会给电脑和手机开启无感认证,每次连接到校园网就不必手动认证,缺点在于不支持输入MAC进行无感认证。这就意味着设备必须支持浏览器才能进行认证,我们的目标也在于破除这一限制。
页面后台
单看网页前台能获得的信息十分有限,接下来就要去页面的实现代码上看一看了。按下F12,进入火狐的开发者工具:
因为页面非常的简洁,所以html内容较少,在调试器下我们能找到几个独立的JavaScript文件:
不难发现,登录认证的核心在于红框内的三个文件。他们的名字非常的坦白明晰啊,authinterface应该是负责认证的接口,security可能是负责加密,login_bch肯定也和登录脱不了干系,统统拿下来研究。
交待一下,我之前从没接触过JavaScript,HTML也只是了解几个标签的运作方式,为了能看懂这几个js,就连夜预习最终达到了能看懂的水平