QQ协议分析.docx

上传人:b****6 文档编号:6265538 上传时间:2023-01-04 格式:DOCX 页数:32 大小:185.66KB
下载 相关 举报
QQ协议分析.docx_第1页
第1页 / 共32页
QQ协议分析.docx_第2页
第2页 / 共32页
QQ协议分析.docx_第3页
第3页 / 共32页
QQ协议分析.docx_第4页
第4页 / 共32页
QQ协议分析.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

QQ协议分析.docx

《QQ协议分析.docx》由会员分享,可在线阅读,更多相关《QQ协议分析.docx(32页珍藏版)》请在冰豆网上搜索。

QQ协议分析.docx

QQ协议分析

QQ2013协议分析

(一)准备工作

腾讯QQ(统一简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件。

腾讯QQ支持在线聊天、视频电话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,并可与移动通讯终端等多种通讯方式相连。

1999年2月,腾讯正式推出第一个即时通信软件——“腾讯QQ”,QQ在线用户由1999年的2人(2人指马化腾和张志东)到现在已经发展到上亿用户,在线人数超过一亿,是中国目前使用最广泛的聊天软件之一。

从我接触最早的QQ2002版本到现在,目睹了txn次变革,其间协议也是变化较大,随着用户量的增加,qq协议越来越勾起开发者的兴趣,从今天开始,我将开始分析QQ2013版本协议,敬请感兴趣的同行关注,笔者所有分析均来自于黑盒分析,不涉及法律问题,另外技术仅作学习之用,请勿用做非法用途。

   工欲善其事,必先利其器,开门见山,先上法宝!

   分析QQ协议需要的工具并不多,只需要一个smartsniff、一个解密工具、和一个编辑器足以。

    

   最好按以下图片配置,省却了你很多麻烦

    

   

官方下载地址

QQcrypter自己搜索吧,很多,主要是包含了一组解密工具,可以用来解密qq的很多加密数据。

编辑器就用word吧,简单、来的快。

另外,文章主要是以UDP协议来分析的,请在登陆窗口设置如下。

 

 

好吧为了方便某些懒人,我好人做到底,我把smartsniff的配置文件也贴出来,以便与你们复制粘贴,以下内容为smsniff.cfg

[General]

ShowGridLines=1

ShowInfoTip=1

SaveFilterIndex=4

SaveSteamsFilterIndex=2

ResolveIPAddr=1

AddExportHeaderLine=1

DecompressHTTP=1

UseDnsQueriesForHostNames=1

MarkOddEvenRows=0

TrayIcon=0

CaptureOnProgramStart=0

GetProcessInfo=1

StatOnly=0

SummaryMode=0

LiveMode=1

LiveModeDisplayContent=1

SplitLoc=16280

PromiscuousMode=0

CaptureMethod=1

PCapAdapterName=

NetMonAdapterName=

NetMon3AdapterName=

AdapterName={ADB5CAC4-3727-4139-B125-E51198B811AD}

DisplayHighChars=0

DisplayMode=3

HexDumpCharsPerLine=16

HexDumpCharsSpc=8

HexDumpDisplayChars=0

HexDumpDisplayCounter=0

HexDumpMaxSize=100

MaxDataSizeDisplay=1000

DisplayTCP=1

DisplayUDP=1

DisplayICMP=1

DisplayCaptureTime=1

ShowOutgoingIncoming=1

ForeColorLocal=16711680

ForeColorRemote=16711872

ForeColorTime=16760832

AutoModeCharsToCheck=64

NonDisplayChar=.

AutoLiveModeScroll=1

ShowOnlyActiveConnections=0

HideLowerPane=0

HttpExtractOptions.Folder=

CaptureFilter=696E636C7564653A72656D6F74653A7564703A3830303000

DisplayFilter=00

WinPos=2C0000000000000001000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF020400003401000090060000F5020000

Columns=240000004E00010087000200D70003003C0004003C0005003C0006008F0007003C0008006900090062000A0030000B003C000C003C000D0054000E003E000F0031001000480011003C00120058001300580014004700150047001600

Sort=13

 

QQ2013协议分析

(二)TCPF

我们尝试把QQ的协议进行分类

文字聊天协议族(TCPF,TextChattingProtocolFamily):

它主要支持与其它QQ客户端进行文字聊天。

TCPF是建立在UDP协议之上。

UDP数据包中的第一个字符02为这个协议族的标识。

TCPF的服务器使用8000号端口,腾讯的QQ客户端软件一般从4000号端口开始尝试使用,但实际上,对客户端使用的端口号并没有限制。

目前的研究集中在TCPF上。

其它未知可能存在的协议族:

我们观察到QQ除了与TCPF服务器通信以外,还有与其它的服务器使用UDP进行通信。

目前我们观察到的服务器为 218.17.217.111:

8000。

客户端使用与TCPF不同的端口。

目前观察到的从客户端发出的包以06开头,而服务器返回的包则以01开头。

目前其具体作用未知。

我们注意到一个有趣的现象是,如果选择离线后重新上线,那么在发出登录包之前,这个通讯已经开始。

我们暂时把它命名为数据传输协议族(DTPF,DataTransferProtocolFamily)。

最新的研究发现,它传递的是QQShow的图片数据。

语音、视频聊天、文件传输:

目前还没有开始分析,尚未知道是使用UDP还是TCP协议。

下面说说我们关心的TCPF协议

TCPF是建立在UDP协议上的协议族,主要支持文字聊天功能。

TCPF是以请求-响应模式工作的。

也就是说,客户端发出一个请求,服务器端会给出一个相应的响应;服务器向客户端发送信息,客户端也会给服务器相应的响应。

请求和响应通过相同的序列号来进行配对(请求代码也应该相同)。

而且每种请求的发起方都是相同的。

TCPF包结构

对于TCPF包我们又把它分为5类:

1)、登录请求包(LIP,LogInPacket),它是由客户端向服务器发出登录请求的数据包。

2)、登录应答包(LRP,LoginReplyPacket),它是由服务器响应客户端登录请求的数据包。

3)、注销请求包(LOP,LogOutPacket),它是由客户端向服务器发出注销登录请求的数据包,服务器对这个包不作应答。

4)、客户端其它包(CSP,ClientSentPacket),它是由客户端向服务器发送的其它包。

5)、服务器其它包(SSP,ServerSentPacket),它是由服务器向客户端发送的其它包。

TCPF包头:

0)、所有TCPF包的前7个字节是包头,包头可以识别TCPF包的内容。

包头的格式为:

1)、第0字节:

TCPF包标识:

0x02。

2)、第1-2字节:

发送者标识。

如果是0x010x00,表明是由服务器发送。

客户端的标识与所使用的使用的QQ版本有关,如:

版本QQ2003(0808)的标识为0x0A0x1D。

具体的协议的格式与这个字段所标识的客户端版本有关。

目前我们以这个最新的0A1D版本来讨论。

3)、第3-4字节:

命令编号。

具体的命令编号含义在《QQ协议概述》(ProtocolOverview.rtf)中有描述。

如果这个字段是0x000x01,那么这是一个注销请求包。

如果这个字段是0x000x22,而发送者标识是0x010x00,那么这是一个登录应答包。

如果这个字段是0x000x22,而发送者标识是其它(例如0x0A0x1D),那么这是一个登录请求包。

其它的命令代码表明是其它包,我们通过发送者标识来区分它是CSP还是SSP。

4)、第5-6字节:

命令序列号。

客户端和服务器都有各自的当前发送序列号。

每初始发出一个指令的时候,使用当前的序列号,然后把当前序列号加一,如果超过0xFFFF,就绕回。

如果是响应对方发出的命令,则使用这个命令的序列号。

例如,客户端当前的序列号为0x1110,它向服务发送一个0x0016命令,它使用0x1110这个序列号,服务器收到以后,返回一个序列号为0x1110的0x0016命令响应。

下一次,客户端又发送一个0x0026命令,这一次它使用加一了的序列号0x1111,服务器也响应0x1111序列号的一个0x0026命令响应。

如果这是服务器要向客户端发送0x0017命令,它使用它自己的当前序列号,比如说0x2220,客户端收到以后,也响应一个序列号为0x2220的0x0017命令应答。

我们可以通过序列号来判断发出的指令是否已经得到了应答,如果没有,可以重发。

服务器对收到的命令的序列号顺序没有要求。

服务器也不会一定按照发出的顺序给予应答。

TCPF包尾:

所有的TCPF包都以0x03作为包尾。

QQ2013协议分析(三)0825touch1

1.1    0825touch1(0825)

    有时候在抓包工具里可以看到两组本地4000端口发往服务器8000端口的数据,那是因为重定向的原因,不过貌似并非那么肯定,有时候重定向并非必须的,所以直接进入第二个包。

1.1.1 [2013/6/611:

01:

16:

524]发送

02

3259//版本号

0825//命令

5B31//包序号

QQ号//892844868

3537BB44//固定,QQ版本号不同则不同

030000000101010000663F//固定

00000000//固定

5A8519D1405E39B40DDA56E7160F0240[王超1] //临时钥匙A

下面是加密数据:

B570C10E75B86C270EDFE28EA1B709263F8AABFDE7B2135C2E73471CDB4F1BDFF03A5C8C78856EB0A68EBCA9767621A50138FBBC7E1442AFE7481D54421C57A2EC02C388B0D7F2DE447B9F892C7A8E3E7630A3E20673C59CFE37864E0AE1BC1684D34155F6F31ABF

[

001800160001fixdata0

0000043200000001000013E1fixdata1

3537BB44QQ号

00000000030900080001固定

未知/随机生成?

705F

F0FC0001003600120002000100000000

000000000000000000000114001D0102001902339DFE698C688F8BDCE1B75951182429EFD22ED70578A224

]

03包尾

1.1.1 [2013/6/611:

01:

16:

732]接收

02

3259

0825

5B31

3537BB44//QQ号码

000000

以下是加密数据,用发送的那个key_0825_0解

9F7678EBE06EC01E0B0929D4421C64A5

C4D4980BF9F83E8B390E2E9F7F969631

F54F83CCBB5BDC6722CF5CD51BAB12D4

AA90C824664BF8678197EF0CC34774DA

34952E2B38214DB2E92F2D5B147E5DBB

7C24FA25C45BFE39ABDA7943B473DC1B

C39CDB25EDEFA69A49AA1A0563E330A6

4577477714275BAB

03

[

FE// 服务器IP需要中转..。

其实根据接收的数据包大小就可以知道。

需要中转的话接收的数据包是135的长度,不需要的话是111的长度

0112

0038//0038的token38的10进制是56,下面56的长度后就可以是下一个命令了,这些数据在 0826包都需要

832BC8FBF46BDDECBEFF987996FEFA660E9085D1F10BF802ED404B05B412AE5CD76E059C3076254EAADD1861034751FB529E0FFCAFE3047C

0017000E0001//固定了

51AFFB85//这个是连接的时间2013-06-0611:

01:

25

7C80E7BE//偶的本机IP124.128.231.190

11C40000000C0016000200000000000900000000

705A56FB//中转的服务器IP112.90.86.251这里把解密出来的IP地址直接放到socket的IP设置那里就可以了

000000000000

]

r

QQ2013协议分析(四)0825touch2

 

索引

4

协议

UDP

本地地址

10.196.7.11

远程地址

112.90.86.200

本地端口

4000

远程端口

8000

本地主机

test

远程主机

服务名称

325{168;157}

数据大小

32,873字节 {11,454;21,419}

总大小

42,156字节 {16,158;25,998}

数据速率

0.2KB/秒

捕获时间

2013/6/814:

35:

13:

621

最后包体时间

2013/6/814:

37:

53:

042

Duration

00:

02:

39.421

进程ID

进程文件名

进程用户

加载MAC地址

远程MAC地址

本地IP国家

远程IP国家

 

1  112.90.86.200

1.1    0825touch2

1.1.1   [2013/6/814:

35:

13:

621]发送

原文

02325908253B433537BB440300000001

01010000663F000000000CBE6A514A04

D39F042E94E2E6C26601FD7080D9F4DE

40F25FB9791249B361AEE13E5F4A2B48

0E4E7C842FBC70E4806794E82B438765

47E31F61F24B688734E1A3748686E4F8

6BBC7BCA7C8D734F64B3C5A07AA2725F

99A9DEBB72EBF36610B4B0873D60C81F

CC41A833F0925420FA1D2C63A5B77AB9

1C2F521B3E471ACFD5B803

 

解密

02//包头

3259//版本号

0825//命令

3B43//包序号

3537BB44//QQ号码:

892844868

030000000101010000663F//固定

00000000

0CBE6A514A04D39F042E94E2E6C26601[王超1] 

FD7080D9F4DE40F25FB9791249B361AE

E13E5F4A2B480E4E7C842FBC70E48067

94E82B43876547E31F61F24B688734E1

A3748686E4F86BBC7BCA7C8D734F64B3

C5A07AA2725F99A9DEBB72EBF36610B4

B0873D60C81FCC41A833F0925420FA1D

2C63A5B77AB91C2F521B3E471ACFD5B8

[

001800160001

0000043200000001000013

E13537BB44

000100000309000C0001705FF02D01B73C30AE01003600120002000100000000000000000000000000000114001D0102001903DC12300FFD4C38312D92A7F753848D127445EB0D6DE1A6CE

]

03

1.1.2   [2013/6/814:

35:

13:

669]接收

原文

02325908253B433537BB440000000D0D

C36D6481B7CB9FB2A536BDF44409858A

2A0CCAC3DDB3D87A230257918CB646CB

88D2F5900FF4EFF261526B5EE1B33213

B23C2028FB99FEDB0C785B9CF80B4BCB

95478495058E2FED3B696783BF0DFEF5

993CE21B771330887FDD669CD6CA03

解密

02

3259

0825

3B43

3537BB44

000000

 

0D0DC36D6481B7CB9FB2A536BDF44409858A

2A0CCAC3DDB3D87A230257918CB646CB

88D2F5900FF4EFF261526B5EE1B33213

B23C2028FB99FEDB0C785B9CF80B4BCB

95478495058E2FED3B696783BF0DFEF5

993CE21B771330887FDD669CD6CA

[

00

0112

0038

96439BC3D0923C9F63DAE3692ACFBDC1C6DF186F0B1C70B290A91E6625459E3D89242CC1FA2029D8327F4DA0028890B46CB7CB1B1378E55A [王超2] 

0017000E0001//固定,每次都一样

51B2D0AF//连接的时间

7C80E7BE//偶的本机

0FA0//端口

0000//成功

]

03

 [王超1]key_0825_0

 [王超2]。

token_0825_0e

QQ2013协议分析(五)0826Loginverify

1.1    0826Loginverify

1.1.1   [2013/6/814:

35:

13:

675]发送

原文

0232590826020E3537BB440300000001

01010000663F00000000D1789D1467F6

A3BA916CA5C8681F23CF07F89434427E

FB4286ADC863CEE97EDA2A3F69C95EFA

7C98B9DC028296700392D5DFA506595F

69F06B2CAAF514EB6ACA9E1AB1B51375

1645BD3C74F29961242B0B730A890FF4

451B4B94835E1BED63A2FAD03D58552A

17EDBD9E682966F096C8B7351EDB5CEC

2EAF01D35CCC219C77B4A0BA25F12541

7C7A5E609BB9AE98C7D480A21FD5CE42

11FF5FA190A0D66A9B6FE634C98ACAC4

9211266A208BF4D0595CF6F16514001D

F0553FA8752CF64B96E5FBFFC7AEFA9D

CA5964F7F14937B6A5DCCF7842399A70

2046A69DAA4DD9795587864493CF4644

96CB1D759D6A0FC1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1