srun3000 PPPoE版 openwrt解决方案

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

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

继续阅读srun3000 PPPoE版 openwrt解决方案

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

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

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

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

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

srun3000web

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

解决wordpress3.5更新插件和主题失败的问题

前几天把wordpress升级到了3.5,发现插件和主题不能在控制板里更新了,显示为:

无法安装这个包。 PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file ‘C:\WINDOWS\TEMP/crayon-syntax-highlighter.tmp’

这应该是新版本的问题,因为以前是正常的。搜索了下,看起来是windows server的问题,应该是某个地方权限不对,可是调整了temp的权限也还是不行。最终在这里找到了一个解决方法。原理是指定wp的临时文件夹路径,避免默认的文件夹在windows下没有权限。方法如下:

打开wordpress根目录下的wp-config.php文件

找到如下:

在下面增加如下代码即可:

最后再wp-content文件夹下新建个temp文件夹,然后试试更新功能,是不是可以了呢?

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登录示例

博客已经修复

昨天发现博客出现了各种诡异的问题。

先是我直接登录后台,提示我要升级数据库,点击升级,结果出现各种错误信息,很明显的一条是options这个表crash了,看来是上次宕机引起的,习以为常了,修复一下就没事了,于是去数据库里把这个表修复了。接着继续登录,但提示我的密码错误,难道保存密码的表也崩溃了?但是没有啊!好吧,重置密码,登录后台。后来我把上次做的cnbeta评论查看器修复了,去编辑原来的文章,发现这个文章的图片没显示,没在意,以为网络问题。结果回到前台,发现所有的文章图片都不显示了,变成了\\。

经过查看源代码,发现文章里所有的引号前面都多了个反斜杠,所以图片和链接都不工作了,是什么原因呢?看到\”可以想到这个是个转义引号的,但是为什么直接显示到文章了?难道wordpress程序出问题了?前两天升级过,但是google一番没有发现有人报告类似问题。难道是数据库的问题?于是登录mysql,发现posts表里确实都多出了反斜杠,但是其他表没问题。php为了防止sql注入,会在插入数据前自动加反斜杠的。可是插入之后因为转义了,是没有反斜杠的,除非是“\\””才会变成“\””。我以前备份过数据,发现以前的没有出现反斜杠,看来是数据库出问题了。于是我把posts数据表导出,直接用记事本查找替换,再导入,解决了。检查了所有文章,发现多了些奇怪的文章,是一些我设置的分类等,还有页面也变成文章了,很是奇怪。经过对比新老数据库,发现这些文章的type属性都变成了post,而以前是menu和page等,好吧,继续改回去,一切都恢复正常了。

总之是数据库出问题的,但是原因是什么呢?不像是宕机引起的数据被破坏,因为没有报告表posts崩溃,而且变化的数据都很规律,而且也是有选择性的,比如type属性全变post了,而其他又没变化。难道是被黑了?某人侵入的我的服务器,把我的博客密码改了,然后改一下数据库?如果是这样,那这黑客也太无聊了。

小i协议分析

以前做了个qq机器人,用的xiaoi进行回复,大概年初的时候,xiao的服务器突然没有响应了,等了几天也一样。后来登录网站发现网站上的小i也不工作了。

后来在他们的网站上发现了新的小i聊天界面,发现协议改了,前几天花了一点时间,把我的机器人更新了一下,又可以工作了。以前的协议是我在网上搜到的,新的协议网上还没有相关文章,我自己抓包进行了分析,发现比老版的协议还简单很多。

在新的网站上小i有很多展现方法,但是那个web的对话框用firebug抓不到数据,估计是frame的问题,于是选取的短信方式的对话框。

新的接口地址是:http://122.227.43.245/robot/demo/sms/sms-demo.action。直接向这个地址post数据就可以了(实际测试中get方法也行),参数只需content,就是聊天的内容,用urlencode编码,然后就能直接收到小i的回复。但是这个网址会给一个cookie,这个是有用的,用来判断这条消息是不是同一个人发送的。比如你多次发送一个相同的消息,他会回复“你怎么总是重复一句话”之类的。这个cookie的有效期是关闭浏览器会话,所以如果模拟post,理论上是无限期的,但是最好还是一段时间获取一个新的cookie

所以第一步先获取cookie,直接get访问上面的接口即可,把cookie保存。以下是php函数:

接下来就是聊天了!

就是这样,挺简单的。