打造内大最强路由器(二):深澜WEB自动认证
零、需求
内大的校园网是分为无线和有线两个部分。无线部分比较省心,当成功认证之后,你的校园网账号就会绑定当前设备的MAC地址,下次登录时无需重复认证。而有线部分就比较坑了,每当已登录的设备断开后则需要重新认证。
所以不仅每天起床后都需要手动进行登录认证,就连重启路由器也要认证……不堪其烦,于是摸索自动认证的方法。
本篇及后续系列篇章的功能都在ikirby的帮助下实现,在此感谢他的帮助。
一、分析
认证只需要在 http://172.31.99.50:802/srun_portal_pc.php?ac_id=2& 里输入学号密码就可以了,所以我们需要抓包查看这个过程到底发生了什么。
二、抓包
需要用到Chrome或者Edge。在认证页按下F12,选中Network
。然后输入你的学号密码并登录。可以观察到此时在Name
的下方多出了一项,我们点开它。
这是一个POST请求,划到最下面,能看到几项关键的参数:username
和password
,也就是你的学号和加密过的密码,所以基本可以判定这个POST请求就是认证的关键了。其他的一些不明所以的参数,更换账号进行对照实验时也不会改变,所以我们可以不再研究,原封不动保留即可。
至于这个密码是怎么加密的,这些参数代表什么,其实并不需要关心,我们只需要在路由器上自动模拟发送这个POST即可。我们先尝试一下。
右键点击auth_action.php
,选择Copy,Copy cURL(bath)
,使得它能够在Linux上运行。新建一个空白文件,粘贴进去,继续分析。
三、模拟
可以看到目标URL是 http://172.31.99.50:802/include/auth_action.php ,关键参数为--data-raw
后面高亮的这一句,其他的-H
都是登录时候的环境参数,是无关变量,猜测服务器不会对这些参数进行验证,可以尝试全部删了。
于是我们就可以用一条命令模拟这一个登录过程(记得把关键参数
引号内的内容改为你自己的关键参数):
curl -d “关键参数” http://172.31.99.50:802/include/auth_action.php
在认证页把账号退出,确认下现在是未认证、上不了网的状态。然后打开路由器后台,系统
->TTYD 终端
,把命令复制进去。如图
(在Linux终端中,粘贴快捷键为Ctrl
+Shift
+v
)
回车执行。
返回了login_ok
,此时路由器已经连上网了,模拟成功!
四、自启
我们的最终目的是实现在路由器开机时就自动进行登录认证,所以我们还需要写一个自启脚本。
找一个靠谱的文本编辑器,推荐 VS Code,把以下内容粘贴进去,并把关键参数
改为自己账号的参数。
(请不要使用微软自带的记事本!!!)
#!/bin/sh /etc/rc.common
START=99
start(){
ping -c 1 202.207.0.6
while [ $? != 0 ]
do
sleep 5
ping -c 1 202.207.0.6
done
curl -d "关键参数" http://172.31.99.50:802/include/auth_action.php
}
原理也挺简单的,认证前需要先获取内网IP,所以可以通过不停地ping学校DNS来判断是否获取到了内网IP。当成功ping通的话就可以开始认证操作了。
改完关键参数后,全选、复制留作备用。
切换到英文输入,在TTYD 终端
里,执行命令:
cd /etc/init.d # 进入/etc/init.d
vi autologin # 用vi编辑器创建并编辑文件autologin
要注意的是,此时是命令模式,需要按i
键进入插入模式才可以输入。
然后把刚刚复制的内容粘贴进去。(再次提醒下,Linux终端里的粘贴快捷键为Ctrl
+Shift
+v
)
按Esc
返回命令模式,输入:wq
并回车,保存退出。
接下来给刚刚编辑的文件加上执行权限,终端执行:
chmod +x autologin
然后设置开机启动项,执行:
./autologin enable
五、测试
进入系统
->启动项
页面,查找有没有刚刚我们创建的autologin
,看下它是不是已启用
状态。
接着进入系统
->重启
页面重启路由器,验证脚本效果。
至此,一个能够满足大部分需求的路由器就配置好了,后面的博文将会进行一些实验性操作,和一些细节性优化。