srun3000 PPPoE版 openwrt解决方案

很久很久以前为了应付深澜校园网做了个srun3000的php版,可以放在路由器里。后来学校的srun3000换认证方式了,改成了pppoe,原理是把用户名加密,然后原始用户名当心跳包,可惜加密手法比电信low多了,一眼就能看出来。于是捣鼓了一天,学了门新语言lua,然后继续愉快地用在了路由器里。

该方法相比于php更加简洁省资源,可以直接应用在openwrt的luci中,加上依赖总共不到100k大小。文后提供石大版,部分学校可能加密手法和心跳不一样,自己修改,至于如何获得加密的用户名和抓心跳包,不在本文讨论范围内。


首先是加密用户名部分,石大是把用户名的每个字符的ASCII加5,加上前缀{SRUN},如果你的前缀不一样,修改第5行,如果不是加5,请修改第7行的+5:

接下来将处理后的用户名写到openwrt的网络接口配置中:

然后处理心跳,以下是石大版本,第五行为心跳服务器地址:

发现新版或者其他院校的心跳包会包含mac地址给两路服务器,但好像用上面的老版本心跳包也没有问题,如果确实需要mac地址,可使用以下心跳包(注意第十行是获取wan口mac地址方法,不确定是否在所有机型所有openwrt版本中有效,请自行验证,注意更改x.x.x.x为你的两路心跳服务器):

接下来利用crontab进行心跳,实际石大的是50s一次心跳,但由于懒没写判断拨号成功后才心跳,导致心跳对不齐,所以我的方法是40s一次,刚开始拨号可能会心跳对不上断线一两次,但后面就正常了。读者自己可以调整crontab和/etc/srun3k/cron文件。另外luci的代码就不贴了,很简单。下面链接是源码,石大可直接用,其他学校请自行确定、修改。

点击下载源码:srun_openwrt

使用方法:直接把对应文件传到路由器中,在luci的网络选项卡中会有srun3000选项,填入原始用户名密码,保存应用即可,等待两到五分钟。如果发现还是没拨上,可以看系统日志中的ppp输出,那里有详细的信息。注意还需要安装luasocket依赖!

好了,托了四年的东西终于放出来了!话说真的好久没写博客了。。。

《srun3000 PPPoE版 openwrt解决方案》上有3条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注