Pidgin之我见

Pidgin之我见

      个人博客: http://linger.devhub.com/blog/842281-pidgin/

      之前在G+上有人谈过此东东,恰好jx说统一通信有个大作业要我帮忙,也是这货,于是研究了一下。

      在这里声明一下,我说的只是我个人之见,难免有错,特别是我只有理论知识的依据,没有编程实践的依据。所以,仅供参考。

      pidgin可以在Windows、Linux、BSD和Unixes下运行的多协议即时通讯客户端。Pidgin是开源的,可以任意修改。我考证了一下,对开发者来说,其实只是提供了个界面而已,核心的网络通信的模块式要开发者来写的,因此开发者所做的工作就是为pidgin开发某种协议的插件。简单来说,就是你为它开发了qq2012协议的插件,你就可以用它来登陆qq了,pidgin的特点就是一个软件登录不同协议的账户(qq,msn,icq等等)。

      我下载了一个Pidgin安装包(windows下),发现已经有好多协议的插件都写好了的,比如msn,icq等,都是外国的。看来统一通信老师的目的是让学生开发一些没有的插件,比如qq,飞信啊。我搜了一下,有人为qq2010写了个(详情见http://code.google.com/p/libqq-pidgin/)。

      怎么开发协议插件呢?首先看熟悉pidgin提供的api,详情见http://developer.pidgin.im/wiki/CHowTo。这个我没看过,估计是讲界面模块跟网络通信的交互。而重要的是协议的分析,举qq为例吧。

      由于自己网络编程半桶水,所以下面也是yy的,没有实践(但也不是完全没有依据)。一般通信协议分析都要抓包分析,wireshark,Sniffer等,还知道个网游做挂的工具wpe。至于怎么分析?我也不懂,自己查找相关知识吧。我知道有个网站http://www.cnpaf.net/,有很多协议分析的文章。其实网上有很多对qq,飞信的分析了,但那些分析可能会过时,协议这东西也是会change的。所以,还是自己会分析为好。对于qq,有个工具专门分析它的,http://hi.baidu.com/lifulinghan/blog/item/75b5bd10483e28e8c3ce79e4.html/cmtid/bf3081ecc284c5de2f2e21d6,估计比较好用。

      协议分析要有一些黑盒测试和逆向工程的思想。直接搜某某协议分析就可以找到一些文章,比如“飞信协议分析”,从那些文章可以得到一些启发。

      阿煌之前还想过做一个在魔兽争霸里进行qq聊天的功能,主要目的是边把妹边打dota。如果知道了qq的通信协议,剩下的工作就是在魔兽争霸里绘制对话框了。目前我知道可以用directx,opengl,GDI三种方法。魔兽争霸是可以用Directx或者Opengl模式打开的,因此用他们绘图没问题。而GDI是windows api,更没问题。我试过用opengl和GDI在魔兽争霸中绘图,但效果不好,应该是我太水了,其实难题是这跟一般的图形界面编程不同,这是要在人家的进程的窗口绘图。对战平台都可以做到,说明是可行的,找个老的windows程序员请教一下即可。

      其实还有种方法,就是和qq进程通信了。其实可以参考qq尾巴病毒的实现原理。不过腾讯处于安全考虑,不知道会不会对qq进程保护过度,以至于不能采取这种方法。据说腾讯现在运营的游戏都会有tp(驱动级保护程序)保护的,估计qq也有什么东东保护吧。    

      其实开学初,我就想研究一下飞信协议了。因为我想给飞信群发加一个功能,就是根据不同的人在短信前面加上该人的备注(或者id),这样会显得更亲切点,收到飞信的人就以为该短信不是群发的。但是生活过于堕落颓废,呵呵。

      如有错误,敬请指正,谢谢。

以下提供一个成功分析飞信协议的例子(python的飞信):http://cocobear.info/blog/2009/12/12/pyfetion-02-release/  当初的动力源自于可可熊的这个python版的飞信

你可能感兴趣的:(编程,windows,qq,python,网络,api)