小米路由器登录脚本
起源
最近研究了下学校校园网,本来想试试不登录的情况下宿舍和教学楼的IP能否互通,答案是不能。这个脚本本来是为了从宿舍路由器获得WANIP而写的,但既然不能互通,拿到IP也没啥用了。脚本地址:miRouterLogin
分析
登进路由器,url是这样的:http://路由器IP/cgi-bin/luci/;stok=3064506d8615d0a05cad3356af54d898/web/home
中间有串参数就是token,我的目的是要模拟网页登录拿到它
而获取WANIP的方式可以通过控制台轻松查看
url是这样的:http://路由器IP/cgi-bin/luci/;stok=3064506d8615d0a05cad3356af54d898/api/xqnetwork/pppoe_status
可见只要拿到token,一切都好说,为此,我们需要从登录页面入手,了解网页是如何跳转到包含token的网址的。
这个过程我参考了https://blog.csdn.net/hackzkaq/article/details/119676876
总之先在登录界面抓包,我嫌麻烦就在手机上用HttpCanary抓的
抓包发现了登录时会向http://路由器IP/cgi-bin/luci/api/xqsystem/login
这个url发送POST请求,内容是类似username=admin&password=0afb4d1dc7ce1c48afa11233bc055b9106ba1c8cd&logtype=2&nonce=0_98%3A15%3A3d%3Afb%3A3b%3Acb_1677680921_8869
这样的数据,其中nonce和password都是js动态生成的。
查找网页源代码,发现登录时调用loginHandle方法
源码显示加密是用了Encrypt方法,继续搜索关键词,最终发现会涉及aes.js
和sha1.js
两个源文件
捋一下逻辑就是:输入密码,由loginHandle方法调用Encrypt方法来生成nonce和加密后的password。将nonce和password POST给路由器,路由器就会返回token
可以直接把要用到的js代码粘到一个文件里,方便调用
Python脚本:
1 | #参考自https://blog.csdn.net/hackzkaq/article/details/119676876 |
执行结果:
- 标题: 小米路由器登录脚本
- 作者: Hexrotor
- 创建于 : 2023-03-01 21:20:35
- 更新于 : 2024-10-23 22:07:49
- 链接: https://hexrotor.github.io/2023/03/01/miRouterLogin/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。