校园网动态密码上网自动联网App

校园网动态密码蜜汁烦人,只能做一个app自动发短信自动联网解决了

我们学校电信开网需要购买一台手机,用来接收上网的密码,每天起床上网否要先发一个短信来获取密码,然后修改路由器的设置进行上网。

购买的手机是 Android 系统的,先前用的路由器是磊科的,磊科的路由器有个问题就是直接POST对应的URL就可以获取或者修改路由器的设置(漏洞/BUG)。所以开始的第一个版本就是直接将获取到的密码POST到对应的URL进行修改设置,达到自动联网的目的。

最近买了一个 OpenWRT 固件的路由器进行捣鼓,首先就是要解决这个自动联网的问题,要不然太麻烦了。毕竟 OpenWRT 不会像磊科这个一样吧。

翻看OpenWRT官网几天后发现,OpenWRT内置有一个统一配置接口叫 UCI (Unified Config Interface) ,可以直接命令行修改路由器的配置。SSH登陆到路由器之后测试一番,发现这个可行。

uciget

而且我们知道,OpenWRT管理器页面也相当于运行在一个服务器环境里面,可以注意到的是 luci 是个 CGI 程序,那我也可以写个 CGI 程序专门更改 PPPOE 的账号密码就可以了,现在只要解决怎么获取URL参数了,毕竟Android客户端获取到密码之后只要把密码搭在URL参数里面访问这个CGI程序就可以了。

这里有一篇文章介绍了 Shell 如何获取URL参数, 基本上原理就是通过 QUERY_STRING变量和 sed 指令提取出来

那么提取出参数之后,只要通过执行uci指令就可以达到修改设置的目的了,最后重启响应的服务,就完成了所有流程

CGI程序源码:https://github.com/NimitzDEV/iOpenWRT_PPPoE_FAST_SET

Android端程序源码:https://github.com/NimitzDEV/AutoConnectADSL (MASTER分支是给磊科用的,OpenWRT是给OpenWRT用的)