利用快捷指令自动登录校园 Wi-Fi

每次在教室、宿舍里连上学校的 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 重放该请求,返回了“登录成功”的提示,表明该接口目前可用。接下来便可以开始制作捷径。

图: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 和操作,输入 快捷指令,选择 运行快捷指令,运行的捷径设置为 登录校园网 - 138。点击下一步并保存该自动化操作。

进入 设置 - 无线局域网设置,将设备连接到 JYU-S 等校园 Wi-Fi,如无意外,系统会弹出运行快捷指令的提示,点击运行,捷径会自动帮你完成身份认证的操作。

图:连接 + 自动登录

尾言

完成以上操作后,连接校园 Wi-Fi 的步骤会方便许多。文中只演示了 iOS 上的快捷操作,本捷径的原理是通过 HTTP POST 发送登录请求 + HTTP GET 判断联通情况,根据此方法可以迁移至其他工具,Android 系统可以使用 Tasker 执行,macOS 与 Windows 系统则可以采用 curl 执行的方式。

以上方法仅适用于使用 Dr.com 作为认证网关的院校,如果使用其它认证系统,接口会有所差异,请自行更改。

参考链接