天天看点

登录华科校园网,我用Socket

用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 观察

登录过程

登录华科校园网,我用Socket

这就是认证页面,在手机端上的模样与电脑端大同小异。一般我们输入正确的用户名(学号)、密码再点击按钮就能跳转到认证成功的页面上去了:

登录华科校园网,我用Socket

一般的,我会给电脑和手机开启无感认证,每次连接到校园网就不必手动认证,缺点在于不支持输入MAC进行无感认证。这就意味着设备必须支持浏览器才能进行认证,我们的目标也在于破除这一限制。

页面后台

单看网页前台能获得的信息十分有限,接下来就要去页面的实现代码上看一看了。按下F12,进入火狐的开发者工具:

登录华科校园网,我用Socket

因为页面非常的简洁,所以html内容较少,在调试器下我们能找到几个独立的JavaScript文件:

登录华科校园网,我用Socket

不难发现,登录认证的核心在于红框内的三个文件。他们的名字非常的坦白明晰啊,authinterface应该是负责认证的接口,security可能是负责加密,login_bch肯定也和登录脱不了干系,统统拿下来研究。

交待一下,我之前从没接触过JavaScript,HTML也只是了解几个标签的运作方式,为了能看懂这几个js,就连夜预习最终达到了能看懂的水平