准备工作:
(1)一个可以刷openwrt固件的路由器,如大多人使用的crazybox版本的路由.
(2)一个可用的edu账号.
(3)一个浏览器(firfox,chrome)
下面开始:
一:刷openwrt固件,如下:
a)去openwrt官网查看 你路由型号的固件版本,然后下载。
b)刷固件到路由器,相应的crazybox都有一个breed控制台(如果不是crazybox,你就得给路由器刷一个breed或者不死uboot).
c)安装wget,路由器自带的wget是简版的
至此路由器准备成功
二:分析认证服务器需要的用户信息:
表面需要的是用户名和密码,但是其实不止这些,我们可以用浏览器来看看,到底发送了什么信息:
按F12调出开发者工具,然后点击登录
至此我们可以看到请求头,请求url,以及发送的数据,我们点击编辑和重发可以看到如下图片,我们要的就是请求主体里面的东西:
类似如下的格式(这里很重要):
请求URL:http://172.16.245.50/include/auth_action.php
请求主体:action=login&username=123456789@yd&password=123456&ac_id=2&user_ip=10.26.16.7&nas_ip=&user_mac=&save_me=1&ajax=1
我多次拿wget工具模拟登录时发现,web认证只需要这个 请求主体 以及 请求url(这是在路由器里面时)
但是在我自己的电脑上(debian 9.5)需要加请求头,具体的原因不明,也没有去研究。这里为了路由器就只加 请求主体
其中有一点对写shell脚本是一个重点:user_ip=10.26.16.7,这个需要自己写脚本获取当前路由器连接edu获取的ip
现在一切准备就绪,可用电脑的wget试一下,格式如下(红色部分字体分别填写自己的账号,密码,自己电脑从edu获取的ip地址):
wget --post-data="action=login&username=123456789@yd&password=123456&ac_id=2&user_ip=10.26.17.14&nas_ip=&user_mac=&save_me=1&ajax=1" http://172.16.245.50/include/auth_action.php
当然如果你需要加上请求头,可自行查看wget的用法,如下面部分http的用法:
编写脚本让路由器启动时自动登录(当然请求url,账号,密码自己改):
#!/bin/sh ip=`ifconfig | grep 'inet addr'| grep -vE '(192|127)' | awk '{print $2}' | awk -F ':' '{print $ 2}'` sleep 10 wget --post-data="action=login&username=123456789@yd&password=123456&ac_id=2&user_ip=$ip&nas_ip=&user_mac=&save_me=1&ajax=1" http://172.16.245.50/include/auth_action.php rm -f /root/auth_action.php
更改脚本的权限:
#脚本名因人而异 chmod 777 login.sh
最后添加,为启动后自己运行:
打开 /etc/rc.local文件,加入脚本运行命令: sh /root/login.sh
当然脚本路径因人而异
ps:至此整个自动登录完成,后续可以将脚本更加优化,使其能够断网自连