前言

之前看到好多dalao们都在Blog发布了如何解决学校WiFi链接比较麻烦的内容,于是咱也在想要不要水一期什么的于是经过多方询问和努力探索//其实就是花了点时间看了看学校的wifi登陆页面,终于从Chrome浏览器里复制出了用来链接学校WiFi的请求数据,经过长时间的摸索(复制粘贴)最终完成了今天的摸鱼目标

所用软件介绍

Chrome浏览器是一款不用介绍大家都知道的由某天朝不存在的公司开发的浏览器,F12开发工具也还是很好用的//废话

Tasker是一个可以自定义之后实现多种功能的应用程序(并不觉得好用)然后呢。。就没然后啦。。。姑且看到支持HTTP POST。。。还以为可以直接把请求头写好然后直接POST的。。。结果居然没办法定义头部。。。。只能发数据的样子。。。无奈又不知道怎么同时把数据和头部都写进data/file输入框里于是就只好放弃,从而转换思路,直接用shell实现这个功能

于是直接来介绍一下Shell好了,众所周知Android上的Shell由于无法使用root权限(Root过的人当咱没说)因此很多操作都无法执行,但是幸运的是,Android的Shell好像自带了Curl。。。。瞬间感觉省事多了。。。除此之外,今天需要的所有操作也并不需要root权限,所以大可放心的继续往下看

请求内容的获取

比如我们可以随手打开一台可以使用wifi的电脑,然后连接一下学校的WiFi啥的。。。。然后就可以打开浏览器访问任何一个站点了//反正不要访问Google这种强制https的就行。。。。然后会发现已经进入了需要输入账户和密码的地方了,这个时候按下F12就可以打开网页的开发人员工具啦。。。//电脑连了WiFi。。。截不到那个界面了。。。

总之会抓到一堆提交的时候发送到服务器上的东西,内容大概如下所示

都POST了啥

目标地址
http://172.30.63.254/cgi-bin/webauth/auth.cgi

HTTP请求头部

Connection: keep-alive
Cache-Control: max-age=0
Origin: http://172.30.63.254
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Referer:[重定向自]
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,ja;q=0.8,en;q=0.7'
x-hd-token: rent-your-own-vps

data

srcip=[本地IP]&tmpid=[用户名]&tmppass=[密码]&id=[用户名]&pass=[密码]&url=[目标网址]&cancel=[是否取消跳转(on/off)]&rtnvalue=nodebug&interval1=5&interval2=5&reason=3

修改成shell能用的样子

首先直接复制出来成为curl命令
变成这样:
curl 'http://172.30.63.254/cgi-bin/webauth/auth.cgi' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'Origin: http://172.30.63.254' -H 'Upgrade-Insecure-Requests: 1' -H 'Content-Type: application/x-www-form-urlencoded' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8' -H 'Referer:[重定向自]' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.9,ja;q=0.8,en;q=0.7' -H 'x-hd-token: rent-your-own-vps' -data 'srcip=[本地IP]&tmpid=[用户名]&tmppass=[密码]&id=[用户名]&pass=[密码]&url=[目标网址]&cancel=[是否取消跳转(on/off)]&rtnvalue=nodebug&interval1=5&interval2=5&reason=3
然而有一点就是。。。[本地IP]是每次链接都有可能会变的。。。。。于是就得想想其他办法。。。。
经过长时间的测试。。。。终于找到了比较合适的命令ip addr show | egrep inet | egrep wlan0$ | sed 's/ /\n/g' | egrep [0-9.]+[/]+[0-9] | sed 's//..//'
执行后将会获得当前设备的无线网络的IPv4地址,比如

电脑版

由于咱的笔记本网卡好像有点混乱因此直接按行数筛选了ip addr show | sed -n 35p | sed 's/ /\n/g' | egrep [0-9.]+[/]+[0-9] | sed 's//..//'会变成这个样子
于是修改后,那行curl命令就会变成这样:

curl 'http://172.30.63.254/cgi-bin/webauth/auth.cgi' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'Origin: http://172.30.63.254' -H 'Upgrade-Insecure-Requests: 1' -H 'Content-Type: application/x-www-form-urlencoded' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8' -H 'Referer:[重定向自]' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.9,ja;q=0.8,en;q=0.7' -H 'x-hd-token: rent-your-own-vps' -data "srcip=(ipaddrshowegrepinetegrepwlan0(ip addr show | egrep inet | egrep wlan0 | sed 's/ /\n/g' | egrep [0-9.]+[/]+[0-9] | sed 's//..//')&tmpid=[用户名]&tmppass=[密码]&id=[用户名]&pass=[密码]&url=[目标网址]&cancel=[是否取消跳转(on/off)]&rtnvalue=nodebug&interval1=5&interval2=5&reason=3"
但是这里有一个问题啊。。。。虽然把获取本地ip的命令扔进curl里也无可厚非。。。但是终归不如只放一个变量进去,所以还是把那行命令提出来好了。。。
于是:

$ scrip=(ipaddrshowegrepinetegrepwlan0(ip addr show | egrep inet | egrep wlan0 | sed 's/ /\n/g' | egrep [0-9.]+[/]+[0-9] | sed 's//..//')
$ curl 'http://172.30.63.254/cgi-bin/webauth/auth.cgi' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'Origin: http://172.30.63.254' -H 'Upgrade-Insecure-Requests: 1' -H 'Content-Type: application/x-www-form-urlencoded' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8' -H 'Referer:[重定向自]' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.9,ja;q=0.8,en;q=0.7' -H 'x-hd-token: rent-your-own-vps' -data "srcip=$scrip&tmpid=[用户名]&tmppass=[密码]&id=[用户名]&pass=[密码]&url=[目标网址]&cancel=[是否取消跳转(on/off)]&rtnvalue=nodebug&interval1=5&interval2=5&reason=3"

 

整理成简洁明了的样子

刚刚那样确实自用也够了。。。。但是为了让其他人也可以看得懂或者说好操作。。。这种一长串的肯定不行。。。。最好直接整理成一个脚本。。。。。一目了然的把需要修改才能用的部分放到外面嘛。。。

于是:
#! /bin/bash ##指定解释器为bash
## 在这里输入用户名和密码
$ ID=[学校的登陆名]
$ PASSWD=[学校的登陆密码]

## 自动获取当前设备wlan0的IP地址
$ scrip=(ipaddrshowegrepinetegrepwlan0(ip addr show | egrep inet | egrep wlan0 | sed 's/ /\n/g' | egrep [0-9.]+[/]+[0-9] | sed 's//..//')
## 使用curl进行发送
$ curl 'http://172.30.63.254/cgi-bin/webauth/auth.cgi' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'Origin: http://172.30.63.254' -H 'Upgrade-Insecure-Requests: 1' -H 'Content-Type: application/x-www-form-urlencoded' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8' -H 'Referer:[重定向自]' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.9,ja;q=0.8,en;q=0.7' -H 'x-hd-token: rent-your-own-vps' -data "srcip=scrip&amp;<span style="color: #ff0000;">tmpid=ID&tmppass=PASSWD&amp;id=ID&pass=$PASSWD&url=[目标网址]&cancel=[是否取消跳转(on/off)]&rtnvalue=nodebug&interval1=5&interval2=5&reason=3"

现在无论是谁都可以直接复制之后就使用这个在shell里进行登陆啦

那么Tasker呢???

至于Tasker有什么用。。。。。咱觉得已经没有任何意义了。。。不过介于每次在手机上打开控制台很麻烦,还是直接用tasker好了。。。。