srun3000 php客户端(可用在openwrt等路由器上)开源下载

很久前学校开始用srun3000了,那时我用php写了个客户端,放在了一个刷有openwrt的路由器上,于是可以实现校园网共享。

我还写了篇文章解析了srun3000的协议并且给出了php的登录示例,有些网友想要我完整的源码和安装方法指导,但是我一直没有给,一个原因是我的php代码已经给了,也有注释,懂点php的直接可以拿来用,我的自用版本就自己用着了,另外嘛,确实自己太懒,没有给个详细的怎样在路由器上安装的教程。

最近学校又换客户端了,也是srun的,已经分析出协议了,路由器上也可以使用,有时间再写篇文章。既然更新换代了,老的也用不了了,那就把老的拿出来分享吧。

以下是我自用的客户端的简要的安装使用方法(一些自用的特殊功能已经去掉,只包含登录,保持在线和注销功能,通过浏览器访问客户端,可记录用户名密码,界面如下):

srun3000web

安装指南: 继续阅读srun3000 php客户端(可用在openwrt等路由器上)开源下载

状态

srun3000保持在线的问题解决了。本来还下载了反汇编工具准备好好研究,发现实在看不懂。后来对着那一串16进制的UDP包,拿着计算器翻译成10进制,猜测是什么含义,试了几次,竟然被猜到了!马上编写代码,路由器可以完美使用了!

srun3000协议简析及php登录示例

一直想让路由器也用上srun3000,但是不知道协议,我们这又关闭了web认证方式。后来google到了一些文章,通过实验,基本可行,现在我来总结、简析一下。

srun3000这个东西有个网页认证方式,就是连上网后,随便打开一个网页,就会自动跳转到一个网页,像cmcc那样。这个网页有可能是个登录界面,那么登录即可。可惜我们这不是的,而是一个信息页面,可以下载客户端。但是如果用手机打开,就会跳转到mobile.html,这个是个登录界面,但是输入正确的用户名密码之后,提示不允许web登录。

web登录是向认证服务器post一段数据,后来抓包发现,客户端也是post这段数据,只不过有些值不同,密码也经过了处理:

username=%s&password=%s&drop=%d&type=2&n=%d&mac=%s

数据中username是用户名,password是密码,drop是是否只访问免费资源(1是,0否),type代表认证方式(1为web,2为客户端),n代表客户端版本(我这是8),mac当然是mac地址了

web方式password是明文,而客户端方式是加密了的。加密方法是这样:

有两个字符串,一个password,一个key,设password 为 12345678,key为 20678439。

逆序循环取key的字符,也就是 9,3,4,8,7,6,0,2,9,3,…
分别与password 的 [0], [1], [2] … 直到password结束 进行异或运算
对于结果,一个字符

[0],[2],….[2n]的字符,译码之后:(低4位 加上 0x36 )连上 (高4位 加上 0x63)
[1],[3],….[2n+1]的字符,译码之后:(高4位 加上 0x63)连上 (低4位 加上 0x36 )

然后连接之后的结果就是提交的密码的密文

提交的时候,用 urlencode或类似的函数处理这段数据。其中key与服务器时间戳有关系,详情可参考此处

搞定密码加密了,就可以实现登录了。向认证服务器的3333端口post上述数据即可,服务器会返回数据。php代码如下: 继续阅读srun3000协议简析及php登录示例