QQ协议分析,TCPF包数据具体分析

转载说明:

本文档说明的是解密以后的TCPF数据包的字段内容。有关如何解密,请参阅有关的其它文档。分析的结果,是基于QQ 2003 (0808) 内部代码 0A 1D的版本。

0x0022,登录命令

发送方:客户端

样本:

000: 4A 35 5D 6E AE DB FA 9C 
008: 96 BE 19 7E A3 E2 B2 48 
016: 00 00 00 00 00 00 00 00 
024: 00 00 00 00 00 00 00 00 
032: 00 00 00 3A 30 9B 69 60 
040: A8 32 73 B2 22 1F AA 65 
048: 6C 09 F8 01 0A 3A 0D 30 
056: 92 CD 77 AB 42 B9 BC 64 
064: 9F 17 57 D4 C3

000 - 015: 用户QQ密码的 md5md5 作为密钥,对空字串进行加密的结果。0A 1D版的TEA算法采取了随机PADDING的方式,所以这个数字每次看起来都不同。但是解密以后总是空字符串。

016 - 016: 总是 0x00。

017 - 020: 以前为IP地址,现在为全零。不知道具有互联网IP的机器是否有真正的地址。

021 - 022: 以前为端口号,现在为全零。

023 - 051: 不明含义,总是相同。

052 - 052: 登录模式。0A为正常方式,28为隐身。

053 - 068: 应该是和机器相关的识别号,在相同的机器上总是相同。

响应方:服务器

成功登录的样本:

000: 00 61 42 58 45 55 6B 58 
008: 7A 42 57 36 78 6E 49 41 
016: 59 01 82 5D 90 40 E7 A7 
024: E3 0F A0 7F 00 00 01 1F 
032: 40 3F 51 22 DA 03 0A 5B 
040: 83 50 D2 91 55 AE FC 3A 
048: 5B D4 E9 31 97 C5 85 13 
056: 64 6B 30 0A CE F1 33 3D 
064: 8D C2 CF 1F 40 3D AC F9 
072: 8E 1F 40 00 00 1C BB 67 
080: 00 CB 49 E6 FF B6 FB 01 
088: 97 41 6E 96 30 48 76 48 
096: EF B8 1D 1E 5A EA EB E9 
104: AB 00 4A 23 D2 00 00 00 
112: 00 00 00 00 00 00 00 00 
120: 00 40 E7 A7 E3 3F 51 22 
128: 91 00 00 00 00 00 00 00 
136: 00

000 - 000: 成功登录应该为0。

001 - 016: 以后通信的密钥。

017 - 020: 登录的QQ号码。

021 - 026: 服务器检测到的客户端的IP地址和端口号。

027 - 032: 127.0.0.1:8000,应该是服务器检测到自己的IP和端口号?作用不明。

033 - 036: 本次登录时间?

......

063 - 068: 一个端口为8000的IP地址,作用不明。

069 - 074: 一个端口为8000的IP地址,这个地址就是DTPF协议组通讯的服务器。

075 - 076: 总是0,应该为分隔。

......

109 - 120: 总是0。

121 - 124: 客户端的IP。(上次登录的IP?)

125 - 128: 上次登录退出时间?

...

129 - 136: 总是0。

其它:未知。


密码错误的样本(用Random Key解密):

000: 02 C3 DC C2 EB B4 ED CE 
008: F3 A3 A1

000 - 000: 密码错误: 02。
001 - 010: 字符串“密码错误!”,GB18030 编码


要求转到其它服务器登录(未观察到,根据perl-OICQ的资料):

000 - 000: 转到新服务器:01。

001 - 004: 请求的QQ号。

005 - 008: 新的服务器IP。

009 - 010: 新的服务器端口号。


0x0001,注销命令:

发送方:客户端(连续发送4次)

样本:

000: 42 80 D8 9A 5A 03 F8 12 
008: 75 1F 50 4C C1 0E E8 A5

000 - 015: QQ密码的 md5md5


0x001D,未知命令:

发送方:客户端,在登录成功后发送。而且总是连发两个。

第一个样本:

000: 03

000 - 000 :总是03,应该是子命令。

第二个样本:

000: 04

000 - 000 :总是04,应该是子命令。

响应方:服务器(定长的响应)

第一个响应样本:

000: 03 00 52 65 76 65 6D 6D 
008: 41 35 65 52 54 64 4E 36 
016: 64 4B 00 00 00 00 00 00 
024: 00 00 00 00 00 00 38 3D 
032: 1E 4A 4E 36 53 87 8E B5 
040: E0 24 5C 97 80 8C 64 23 
048: F4 FF BC 42 69 72 39 1D 
056: F6 31 22 65 37 BE 00 D1 
064: 8E A6 F8 4C 75 82 F7 B4 
072: 49 1F FF 72 3E 26 01 13 
080: 1B 18 F6 5A BD 8E 58 00 
088: 01 00 00

000 - 000: 03,应该表明是对03号子命令的响应。

001 - 001: 00,应该是分隔。

002 - 017: 16个字符,全由字母和数字组成。

018 - 029: 全0。

030 - 030: 总是38,应该是后面数据的长度。

...

087 - 090: 总是 00 01 00 00。

第二个响应样本:

000: 04 00 43 44 7A 7A 38 63 
008: 74 6A 52 55 4B 55 35 43 
016: 52 6B 00 00 00 00 00 00 
024: 00 00 00 00 00 00 38 A2 
032: 5B B9 D3 0E 67 E8 93 BD 
040: 0E B4 F6 AE BF 54 47 D7 
048: 0F 69 84 5D F2 81 5D D8 
056: 12 BF EC 1E 1A 83 D2 58 
064: 1D 94 D4 03 EB 91 3B 13 
072: A6 B4 66 37 5C A1 96 48 
080: 15 8F BD E0 A8 6C 5F 00 
088: 01 00 00

000 - 000: 04,应该表明是对04号子命令的响应。


0x0006,获取用户信息:

发送方:客户端

样本:

000: 32 35 33 32 30 38 34 38

需要获取信息的用户QQ号码。ascii字符串形式。

应答方:服务器

样本:

000: 32 35 33 32 30 38 34 38 
008: 1E 6A 65 66 66 5F 79 65 
016: 63 6E 1E D6 D0 BB AA C8 
024: CB C3 F1 B9 B2 BA CD B9 
032: FA 1E B9 E3 B6 AB CA A1 
040: 1E 35 31 30 30 30 30 1E 
048: 64 6F 6E 67 20 66 65 6E 
056: 67 20 72 64 2E 20 31 34 
064: 35 1E 2D 1E 33 31 1E C4 
072: D0 1E 2D 1E 6A 65 66 66 
080: 5F 79 65 63 6E 40 73 69 
088: 6E 6F 6D 61 63 2E 63 6F 
096: 6D 1E 1E 1E 1E 30 1E 1E 
104: CD A8 D0 C5 1E 2D 1E 30 
112: 1E 1E 1E 32 30 34 1E 31 
120: 33 30 30 35 31 36 31 32 
128: 34 34 1E 30 1E CF B2 BB 
136: B6 BA CD C8 CE BA CE C8 
144: CB C1 C4 CC EC A1 A3 1E 
152: B9 E3 D6 DD 1E 2D 1E 2D 
160: 1E 30 1E 32 1E 30 1E 55 
168: 53 54 43 1E 31 32 1E 31 
176: 32 1E 32 1E 30 1E 2D

返回的数值由一个个字段组成,数字也是以字符串表示,没有填写的很多为-。每个字段用1E分隔。分别的含义为:

QQ号码,昵称,国家,省,邮政编码,街道地址,电话,年纪,
性别:男女的GB编码。
真实姓名,电子邮件,寻呼编号,寻呼号,寻呼机供应商,寻呼台号,寻呼机类型,
职业,主页,
添加好友认证方式:'0' 不认证,'1' 需认证,'2' 不许添加
未知20,未知21,
头像:0-255的字符串表示,每三个代表一组正常,离开,忙的头像
手机号码,
手机类型:'0' 为无移动QQ,'1'为开通移动QQ。
自我描述:
城市,
未知27,未知28,未知29,
是否公开手机:'0' 公开 '1' 好友 '2' 不公开
是否公开联系方式:'0' 公开 '1' 好友 '2' 不公开
学校,
星座:以下的对应关系,见pagers.plist
生肖,
血型,
QQShow,
未知37。


0x000D,设置状态:

发送者:客户端

样本:

000: 0A 00 00 0

Tags:  qq协议

延伸阅读

最新评论

  1. 看不懂  诶

发表评论