您当前位于: 首页 » 咸吃萝卜, 我爱PHP, 网络通信协议 » 关于飞信2011贺岁版通信协议二三事

关于飞信2011贺岁版通信协议二三事03/20/2011

到今天为止,飞信2011贺岁版是中国移动发布的最新的飞信pc版本,他的协议和2010区别很小,sip部分仍然是使用的v4版本,除了登录部分修改了一下版本号以及增加了一些与聊天无关的额外功能之外,就没有什么变化了。

我曾经有一个小需求:每天早上8点给自己发一条当天的天气预报短信,经过仔细查看,在下发现飞信客户端上有一个定时短信功能,并且在主界面上可以将天气发送给自己或者朋友,这颇令人振奋,一度以为问题就此解决!!但是再细细观察,发现官方客户端无法做到自动发送,于是只能用程序来实现这个东西了,long long time ago,那是飞信的2008版,本人有用php实现了一下飞信的短信功能,当时也是想弄个博客提醒功能,出于年久失修,那个老代码已经不能使用鸟!

忙里偷闲,重新操起家伙上路,最终用php实现了给自己报天气预报的功能。实际上网上已经有很好的开源实现,只是没有用php来做的,比如:Maplefetion(作者博客:https://www.solosky.net/).用php做成命令行下的飞信客户端还是有些扯蛋,因为莫名其妙,过不了多久这个php cli就变僵尸进程了,原因不明。因此还是启动一个crontab,早晨8点跑一次然后退出比较靠谱。

飞信2011贺岁版(实际上是从2010版开始)和以往版本的不同就是计算response用了rsa算法,并且多了验证码机制,无法绕过。说说我用php实现过程中的一点心得。

1、RSA算法可以借用openssl的,或者网上有一个rsa的类,不过需要改造一下才能用,我用的是后面的方法;

2、验证码得到的base64编码可以不用解码,直接放到一个html文件中(https://en.wikipedia.org/wiki/Data_URI_scheme),然后用非IE浏览器打开,例如:

3、输入验证码的过程我选择了从文件读取,到了验证码这一步的时候,程序循环等待code.txt这个文件的产生,一旦存在这个文件就读取其内容,拿到服务器去做验证;

4、将自己的昵称改成空,给自己发的短信就更像是“真正的短信”了,不带昵称和冒号;

5、在我公开2008版php代码的时候,网上实际上已经有很多类似的实现了,同时造成的问题是飞信机器人泛滥,出于对大家负责,我也不打算最近放出源代码,请不要留言叫我发到你邮箱之类;有一起研究的朋友欢迎和我讨论这个协议,实际上网上有很多java、.net、python的飞信源代码公开,并且都能够使用,如果不懒,把他们改造成php的是很容易的。

 

| 2条评论 标签:  

2条评论
  1. wclssdn说道:

    用了飞信协议, 只能给自己好友发信息吧? 不能随意乱发是不- -?

  2. 小布菜菜说道:

    输入验证码的过程我选择了从文件读取 ? 破解了验证码?

发表评论