2024年2月18日发(作者:)
手机QQ协议分析
篇一:QQ协议分析
QQ协议分析
一、 概述
QQ是目前流行的及时聊天工具,QQ协议非常庞大,版本升级比较频繁,而且与多数软件不同的是,它的客户端升级往往伴随着协议响应的改变。本文是基于QQ2008版的QQ协议分析。QQ消息是加密的,QQ的加密解密用的是TEA算法,几乎无法破解QQ消息内容。但是可以根据QQ包头和协议格式识别QQ数据。
QQ支持TCP和UDP传输,经过观察基于UDP可以用端口再根据协议特征方式识别;而基于TCP的HTTP方式可以根据协议识别QQ数据。
二、 QQ协议分析及数据特征
QQ协议有多种包头,每种用途分别代表一类用途的包,但不是所有的包都有包尾,以下是一些存在的包头包尾的格式:
表1
根据抓包分析,QQ的UDP数据的服务器端口号总是在8000端口,而且UDP数据符合上述表格描述。下面是2类UDP数据包,其中服务器端的端口号为8000。
例1:
00 1b 0c ce 5b c9 00 1d 72 9a 8e 1d 08 00 45 00
00 67 0f 87 00 00 80 11 ed da c0 a8 22 34 3a 3d
20 0b 0f a0 1f 40 00 53 9d b6 02 01 00 00 00 38
05 3d e2 54 00 00 6a 23 01 00 12 37 80 21 ae 29
fe 9f 91 b0 23 48 8d 12 39 8e 5f e9 76 14 80 69
04 1c f1 69 70 6b cf 04 71 66 92 e6 ea 24 41 63
02 54 3a aa e8 17 5e 6b 27 a3 99 2a 18 29 e5 fb
51 64 93 d7 03
例2:
00 1b 0c ce 5b c9 00 1d 72 9a 8e 1d 08 00 45 00
00 59 0f c1 00 00 80 11 c1 9a c0 a8 22 34 77 93
0e c9 17 71 1f 40 00 45 5f 7a 03 50 32 b0 00 00
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 01 00 00 12 37 00 00 00 00 00 00 00 00 00
00 05 00 05 3d e2 54
在用Ethereal抓包过程中发现有些8000端口的UDP数据包,有0x02包头但没有
0x03包尾,但它确实属于QQ数据,不知道是什么原因。
根据观察,QQ除了使用UDP通讯,还与TCPF服务器通讯,而且与TCPF服务器的通讯量远远大于UDP通讯量。文本聊天就是这一类型,下面就简要介绍TCPF协议。
TCPF(Text Chatting Protocol Family)文本聊天协议族,它主要支持与其它QQ端进行文字聊天,TCPF是建立在UDP协议上的协议族。
TCPF格式为:包头+数据+包尾。
包头:所有的TCPF包的前七个字节是包头,包头可是识别包的内容,包头格式为: 第0个字节:TCPF包标示:0x02。
第1-2个字节:发送者标识,如果是0x01 0x00,表明是由服务器发送,客户端的标识与所使用的QQ版本有关。
第3-4个字节:命令编号。
第5-6个字节:命令序列号。
包尾:所有的TCPF包都以0x03作为包尾。
在包头和包尾中间的数据分为以下五类:
登录请求包(LIP,LogIn Packet),它是由客户端向服务器发出登录请求的数据包。
登录应答包(LRP,Login Reply Packet),它是由服务器响应客户端登录请求的数据包。
注销请求包(LOP,LogOut Packet),它是由客户端向服务器发出注销登录请求的数据包,服务器对这个包不作应答。
客户端其它包(CSP,Client Sent Packet),它是由客户端向服务器发送的其它包。
服务器其它包(SSP,Server Sent Packet),它是由服务器向客户端发送的其它包。
具体TCFP包结构请参阅QQ协议分析之TCPF包结构.htm文档。
用Ethereal抓包发现存在大量TCPF协议格式的QQ数据走的是80端口的HTTP方式。下面是一个HTTP的TCP流的16进制数据:
00 3e 02 12 37 00 91 26 64 05 3d e2 54 32 b8 c2
bf a4 d2 65 4b e9 8e d5 4f 23 51 74 f6 64 55 d2
57 d3 d9 64 78 77 77 ef ed cc 78 67 db 00 de 12
a0 12 b1 82 96 1c 8b c0 c8 53 a9 4d 83 03
下面介绍QQ传送文件数据包。文件传输是建立TCP连接之上的,其格式是包头为0x04包尾为0x03,其包的格式如表1所述。下面是用Ethereal软件抓取的文件发送包的某个部分:
04 12 37 00 68 00 01 61 83 05 3d e2 54 00 00 00
00 00 00 00 00 00 38 3a 4c a0 8e 74 d7 b4 3a d1
c7 67 8f c4 16 69 9f 44 f8 ae e8 68 5a c2 ca 0c
bf 48 86 26 2c 85 b8 ab ae d2 b1 f9 a8 6b b8 92
a3 a9 bd 51 38 ca d7 ae ce c3 f0 64 c4 a8 db a5
9b df c1 9f cd 65 35 41 0d 12 8c 2a dc 25 0f a1
64 83 4e b9 92 91 5d 03
还有一种文件传输情况不符合上述规律,在传输文件的包中前几个字节是: 04 12 21 …
或者是 27 00 00 00 00 14 00 00 00 00 01 05 (需要记录这组会话的IP地址和端口号,之后这组会话之间的数据就是QQ文件传输数据)
三、 总结
综上说述,QQ数据具有以下特征,UDP数据具有固定端口8000,并且数据格式如上述表1中讲述。TCP数据有两类一种是是基于HTTP的TCFP包格式的文本聊天数据,其特征可根据TCPF包的包头和包尾特征识别,另一种是文件传输,可根据数据包的特征识别数据。
以上分析包含QQ文本聊天、登陆、登出、文件传输等大部分QQ数据,QQ还有一些未知的协议无法得知。
此外由于版本问题,不同QQ版本可能QQ数据有所不同。
篇二:Tencent QQ协议分析报告
Tencent QQ协议分析报告
1 Tencent QQ软件简介
QQ是深圳市腾讯计算机系统开发的一款基于Internet的即时通信(IM)软件。腾讯QQ支持在线聊天、视频电话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能。并可与移动通讯终端等多种通讯方式相连。1999年2月,腾讯正式推出第一个即时通信软件——“腾讯QQ”,QQ在线用户由1999年的2人(2人指马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿。是目前使用最广泛的聊天软件之一。
2 Tencent QQ功能与使用协议推断 Tencent QQ的是一个即时通讯软件,综合性的即时通讯软件,包括P2P,HTTP等协议使
用,主要提供点对点信息传输,下载、上传,在线影音等功能。本文主要针对QQ的文件传输协议做分析诊断。
2.1 系统主界面
2.2 传输文件
3 腾讯QQ协议详细分析
3.1 连接过程
3.1.1 Sniffer预判
连接建立过程将会采用TCP协议,建立连接,传输数据。
3.1.2 Sniffer过滤器设置
3.1.3 Sniffer结果
3.1.4 Sniffer结果分析
抓包住到了TCP连接建立过程,还有HTTP建立数据包,本次抓包主要是TCP数据包,与腾讯服务器建立连接后,通过HTTP下载用户数据。
3.2 功能文件传输
3.2.1 Sniffer预判
文件传输功能,采用了P2P模式,会有大量的UDP数据包传输,数据建立过程,通过TCP协议建立,抓包将会抓到大量的UDP数据包。
篇三:QQ协议分析(一)
QQ协议分析(一)
QQ协议的分析已经很早就有很多人做过了,不过由于版本的更新,之前分析的协议又不能用了,不过目前2008版的QQ协议还可以用,我的分析也是在之前其他人分析的基础上弄的,只是分析了几个重要的协议,实现了登录,收发信息,心跳包,注销等功能了。 以下是基于QQ2009的协议,经过简单研究,发现QQ2009与2010协议基本相同。 0x0091
发送:
包头:02
版本:1A 35
命令:00 91
包序号:62 7D
QQ号:10 73 a1 f6
固定:02 00 01 00 01 01 01 00 00 64 00
密钥:D6 D1 DA FD 4D E6 70 FE 46 48 A0 AD BD 95 E0 B6
密文:82 9C 11 56 B6 24 68 18 A6 A1 B8 09 6A A7 C3 C4
E8 45 E5 33 EE 13 52 C6 C7 29 D1 46 93 21 97 EF 88 F2
FE 8B 76 9F DB 44 EA B0 1A 10 68 AC 05 18
包尾:03
解密:
固定:00 01
01(在后面的命令里面要用到的):00 00 08 04 01 E0
02(在后面的命令里面要用到的):00 00 03 20 00 00 00
01 00 00 0A 5D
固定15字节0:00 00 00 00 00 00 00 00 00 00 00 00 00
00 00
接收:
包头:02
版本:1A 35
命令:00 91
包序号:62 7D
QQ号:10 73 a1 f6
固定:00 00 00
密文:D1 B3 D5 AF 79 DE 82 8B E5 F8 FE 98 59 DB 0D AD
D5 D6 8A FE A4 E1 74 5B 08 F0 58 E2 4E 6A 5F 37 DE BC
9E 2F 27 CA 40 82 11 1A 48 CD C6 32 35 7D 6A D9 9F 8C
0A 72 12 29 5A 5E AD 98 3C 77 0D 77 48 EB B4 17 F9 14
66 CC 7F D2 97 82 43 8F D8 87 89 CA 4A 02 71 29 19 66
包尾:03
解密结果:
接触成功:00
登录时间:4B E2 CF 4E
IP地址:7B 91 B5 20
固定:00 00 00 00 00 00 00 00
令牌长度:00 38
0091_Token:
4E A3 61 22 B2 03 8A E3 F6 3B E3 E0 CF 90 2E B0 8D B3
86 98 37 D4 E5 E5 62 94 AB 0A F2 73 A3 DD 9D 81 5F 0E
1D CA A4 57 52 09 83 EA DC 88 80 5F D5 C4 BB D4 80 64
18 83
Touch结果:00 (00成功开始登陆,其他继续连接)
如果发生重定向
接触成功:00
登录时间:
IP地址:
固定8 字节:
令牌长度:
令牌内容:
Touch结果:01
重定向计数:01
链接服务器提供者标识:00 00 00 01
服务版本:00 00 00 00
服务器IP 地址(四字节):0x00BA
发送:
02
1A 35
00 BA
5F C8
10 73 a1 f6
02 00 00 00 01 01 01 00 00 64 00
密钥:FD F2 EC E4 F5 C0 95 E7 30 8B 08 55 CB 44 7B 60
密文: B3 A0 63 AB 9E B2 F5 70 7B B7 3B EA 06 D8 60 E9
87 27 B0 D5 81 1E 0A AF 6D AC 59 7F DF 45 A8 71 4E 5D
5E 8F EA DC C1 06 82 F7 FD 3B 21 5E 87 F5 C5 2A D6 AF
D1 C0 A4 3E DB 90 DA 70 A4 CF F8 E0 B9 1A 2C C2 14 D6
E2 67 52 16 F3 A8 79 59 BC AA CF 78 D3 E8 21 7E 30 9D
AF D1 88 15 A7 B9 77 41 12 33 F2 09 29 4E 74 8E
03
解密:
固定:00 01
1:00 00 08 04 01 E0
2:00 00 03 20 00 00 00 01 00 00 0A 5D
00 38
0091_Token: 4E A3 61 22 B2 03 8A E3 F6 3B E3 E0 CF 90
2E B0 8D B3 86 98 37 D4 E5 E5 62 94 AB 0A F2 73 A3 DD
9D 81 5F 0E 1D CA A4 57 52 09 83 EA DC 88 80 5F D5 C4
BB D4 80 64 18 83
固定:03 00 05 00 00 00 00 00 00 00
接收:
02
1A 35
00 BA
5F C8
10 73 a1 f6
00 00 00
密文: 99 26 D0 CD F6 85 AB D5 89 6A E4 91 A4 65 B0 A4
2B 41 B0 C9 6A 64 BF EF 87 64 80 F2 D0 36 BB E8 64 E3
47 B8 42 51 FF B6 79 8F 78 92 D0 9C F6 65 3C F0 5A EE
51 24 E1 79 6B 1C 35 D4 AC 0F 59 00 8F CE B0 2D C8 6D
F1 66 FE 22 8E 70 47 D0 44 B9
03
解密:
验证结果:03 (03 标示成功,04 需要验证码)
固定部分:00 05
是否需要验证码:00 (00 不要,01 要)
验证码:00 00 00 00 (需要验证码时为00 00 01 23,不需要时为全 0 )
令牌长度:00 38


发布评论