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