每次在教室、宿舍里连上学校的 Wi-Fi,要等登录页面弹出来,iOS 用户还会遇到无法登录的问题。在手机上,因为弹出登录页面使用了隐私模式(Privacy Mode),记住密码这一功能也无法正常使用,真是气死人辽。
登录流程分析
先来看一下设备登录校园网的流程。
和家里带密码的无线网络不同,校内的无线网络 JYU-S、JYU-T 将无线信号与用户鉴权两个部分拆散,无线 AC(Access Control,接入管理) + AP(Access Point,接入节点)负责分发无线信号与动态 IP 分发,用户鉴权部分则由 Dr.com 的认证网关伺服器负责,此类认证网关通常采用专用客户端或强制门户实现用户认证(Captive Portal)。
设备连接上校园网后,系统会通过访问特定网址来检测当前网络是否能够互联网,但因为我们没有通过网关的登录认证,认证网关会将原本应该去向 A 的访问请求强制重定向至 B,也就是认证页面(Web Portal)。
来到登录页面,在这个页面上,我们只需输入校园网账号与密码,点击登录,便完成了认证流程。学习过 php 语言的同学不难猜出,这个页面是通过 POST 的方式向认证网关发送了一个带有账号与密码的登录认证请求,认证伺服器收到并核验完成后,我们就可以上网了。
既然是 POST 请求,那事情就简单很多了,抓接口 + 分析 + 重放。
制作捷径
先来看看最终效果。
提取账号信息
出于安全考虑,传递的密码使用了混淆后的密码。提取混淆后的密码有两种方式:抓包、重算。
抓包
进入校园网的登录页面,打开浏览器的开发者工具(本文以 Chrome 浏览器为例),切换到 Network 选项卡,勾选菜单栏上的 Preserve log(保存请求日志)。
在页面上输入校园网账号、密码,点击登录,Network Tool 便会将网页的所有请求记录下来。
点击列表的 a30.htm
,在 General 一栏中可以得知这个请求是一个 POST,下方的 From Data 记录了 POST 请求发送的所有信息,其中包括校园网账号与混淆后的密码,将 upass 的值记录好,后面会用到。
参数 | 值 | 作用 |
---|---|---|
DDDDD | 000000000 | 校园网账号 |
upass | * | 经过混淆后密码 |
R1 | 0 | 固定值 |
R2 | 1 | 固定值 |
para | 00 | 固定值 |
0MKKey | 123456 | 固定值 |
R6 | 1 | 固定值 |
MD5 计算
除了通过抓包获取混淆后的密码,我们也可以自行计算出 upass 的值。在登录页面的 JS 文件 中展示了混淆过程:MD5(pid+password+calg)+calg+pid
。其中 pid=2、calg=12345678,password 为校园网账号的密码。下面以密码(100000000)为例。
第一步:组合 pid、password、calg 三个字符串,得到 2/100000000/12345678
(结果不包含 “/”),然后进行 MD5 运算,得到 32 位小写加密后的字符串 2929a4a0f01fd2da1fa7f49c346b2049
。
第二步:将字符串与 calg、pid 字符串组合,即 2929a4a0f01fd2da1fa7f49c346b2049/12345678/2
(结果不包含 “/”),组合完成得到的字符串即为 upass 的值。
通过 Postman 重放该请求,返回了“登录成功”的提示,表明该接口目前可用。接下来便可以开始制作捷径。
填充信息
感谢南区群友建议,使用 dr.com 可自动解析至本区域的认证地址。(20.11.19)因校内不同区域使用的认证网关服务器不一致,东区、中区用户在宿舍区与教学区需要使用不同的登录捷径,且无法使用场景自动化。(20.11.19)
登录校园网捷径下载链接:iCloud按照不同区域,选择对应区域的捷径:东区、中区、南区、教学楼。(20.11.19)
温馨提示:第一次使用捷径,需要完成以下步骤:
1、快捷指令 APP 下载地址:App Store
2、在 设置 - 快捷指令 中打开 允许不受信任的快捷指令,(开启前需要先在快捷指令中运行一次捷径)
在添加捷径时,请按照初始化流程的提示,填写校园网账号与混淆后的密码(即 2.3 步骤获取的 upass 字符串)。
添加 登录校园网 捷径后,请打开该捷径的 网络访问权限 与 通知权限(点击的 登录校园网 捷径文件右上角的 更多,继续点击 更多,在下方勾选 允许访问互联网 与 通知提示 两个选项)
填写与开启权限后,便完成了捷径的安装步骤,连接 Wi-Fi、运行捷径,如果成功登录,那么会弹出以下提示;而如果出错,则需要进入捷径的编辑界面,找到 获取 URL 内容 下方的文本框,查看错误提示,在目前接口未调整的情况下,多半为账号或密码填写错误导致无法登录。
场景自动化识别
除了简化操作以外,iOS 的快捷指令还提供了自动化操作,当触发某些条件后会运行指定操作。借助这个特性,我们可以设定为连接到校园 Wi-Fi 则自动运行登录捷径,减少操作。
进入 快捷指令 首页的底部的 自动化 选项卡,点击右上方加号,选择 创建个人自动化。
在条件列表中选择 无线局域网,选中 JYU-S、JYU-T、JYU-S(5G)、JYU-T(5G) 四个无线网络,点击下一步。
在操作页,点击下方的 搜索 App 和操作,输入 快捷指令,选择 运行快捷指令,运行的捷径设置为 登录校园网。点击下一步并保存该自动化操作。
进入 设置 - 无线局域网设置,将设备连接到 JYU-S 等校园 Wi-Fi,如无意外,系统会弹出运行快捷指令的提示,点击运行,捷径会自动帮你完成身份认证的操作。
尾言
完成以上操作后,连接校园 Wi-Fi 的步骤会方便许多。文中只演示了 iOS 上的快捷操作,本捷径的原理是通过 HTTP POST 发送登录请求 + HTTP GET 判断联通情况,根据此方法可以迁移至其他工具,Android 系统可以使用 Tasker 执行,macOS 与 Windows 系统则可以采用 curl 执行的方式。
以上方法仅适用于使用 Dr.com 作为认证网关的院校,如果使用其它认证系统,接口会有所差异,请自行更改。