我们对于QQ数据包的分析,到底是分析什么,分析出来之后,我们可以学习到什么?这是我个人很关心的事情。因为从来没有做过对于数据包的分析的事情,对于QQ数据包的分析要从何下手,显得很迷茫。我觉得,对于这个问题,分清问题域很重要。
如果分析的深入的话,最直观的收获就是自己也能够制作出一款简单的文字聊天工具,而且这个工具可以借助于腾讯公司的服务器和其他版本的QQ进行聊天。至于更远的收获,我还不知要怎么去想。
我把对于QQ数据包的分析以及日后QQ模拟软件的制作分成三块问题域:
1、QQ软件的协议分析:
①、QQ的协议进行分类:文字聊天协议族(TCPF, Text Chatting Protocol Family):它主要支持与其它QQ客户端进行文字聊天。TCPF是建立在UDP协议之上。UDP数据包中的第一个字符02为这个协议族的标识。TCPF的服务器使用8000号端口,腾讯的QQ客户端软件一般从4000号端口开始尝试使用,但实际上,对客户端使用的端口号并没有限制。
②、QQ数据包的截获与采集;
③、对已经截获的数据包进行分析;
2、数据包的加解密:
需要具备一定的加解密常识与知识,这是实现对于数据包明文进行分析的前提,如果没有把已经加密了的密文数据解密成明文,也就无从对数据包协议进行分析。
所以,还必须知道QQ数据包使用的协议大致用的是什么算法。不然,真给我一堆乱码,叫我去想着怎么解密,那是不可能的事情。
3、QQ软件自身结构:
如果不了解QQ自身的构造,就不知道什么包由什么进程发送,由什么函数接收。截获的数据就会是一个QQ程序中多个函数或多个进程同时发送的不同作用的包的大杂烩。无法对包分门别类,怎么分析?
new:拥有一个可以编译的QQ模拟程序,是对QQ协议进行分析的好办法,因为自身没有任何基础,如果凭空直接依靠截获腾讯官方的QQ数据包来进行分析,难度很大。
目前,LumaQQ2006版本是一个可以登录QQ服务器并且拥有源代码的程序,不过它是用java编写的,可以通过使用eclipse对其源代码进行编译,来研究QQ数据包的协议特点。
以上暂时只是个人的初步见解,有不对之处,希望有人能指出。