qq用的是什么协议Word下载.docx

上传人:b****3 文档编号:14392275 上传时间:2022-10-22 格式:DOCX 页数:7 大小:20.64KB
下载 相关 举报
qq用的是什么协议Word下载.docx_第1页
第1页 / 共7页
qq用的是什么协议Word下载.docx_第2页
第2页 / 共7页
qq用的是什么协议Word下载.docx_第3页
第3页 / 共7页
qq用的是什么协议Word下载.docx_第4页
第4页 / 共7页
qq用的是什么协议Word下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

qq用的是什么协议Word下载.docx

《qq用的是什么协议Word下载.docx》由会员分享,可在线阅读,更多相关《qq用的是什么协议Word下载.docx(7页珍藏版)》请在冰豆网上搜索。

qq用的是什么协议Word下载.docx

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

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

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

8000。

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

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

目前其具体作用未知。

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

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

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

  语音、视频聊天:

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

  聊天室:

没有分析,应该是tcp协议。

  随着对这些协议分析的开始,我们会给它们更精细的划分和恰当的命名。

  tcpF:

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

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

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

服务器向客户端发送信息,客户端也会给服务器相应的响应。

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

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

目前,已知的请求包括:

  0x0001注销登录

  0x0002心跳信息

  0x0004更新用户信息

  0x0005搜索用户

  0x0006获取用户信息

  0x0009不需认证方式添加好友

  0x000a删除好友

  0x000b需要认证的方式添加好友

  0x000d设置隐身、示忙等状态

  0x0012确认收到系统消息

  0x0016发送消息

  0x0017收到消息(服务器发起)

  0x001a未知作用。

  0x001c在对方好友列表上删除自己

  0x001d未知作用。

  0x0022登录

  0x0026获取好友清单

  0x0027获取在线好友

  0x0030群操作指令

  0x0080收到系统消息(服务器发起)

  0x0081收到好友状态改变消息(服务器发起)

  本篇文章来源于中国协议分析网|

  篇二:

qq协议整理文档

  qq协议整理

  qq协议整理文档的内容主要来自网络资料,特别感谢致力于qq协议试探分析的朋友们。

本文档整理有关qq的命令,数据包格式等。

由于qq协议未对外公开,采用了信息加密技术以及随着版本升级总有所改动(大体上不会有太多变化),本文档仅供参考!

  一qq应用数据包头:

  qq数据报头(除掉udp或tcp等基本网络协议头,需要注意:

tcp传输的qq数据包,需要去掉包头2个字节,此两个字节代表数据包携带应用层数据的长度,下列所有qq包均指udp数据包应用层或者tcp数据包应用层去掉首部两个字节后的数据):

  所有qq包的前7个字节是包头,包头可以识别qq包的内容。

包头的格式为:

(单位字节)0

  1

  2

  3

  4

  5

  6

  78(b)

  表一:

标准头格式

  第0字节:

qq包标识:

0x02。

(令牌请求报为0x16,下面所有数据报指0x02标识的报)

  第1-2字节:

发送者标识。

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

客户端的标识与所使用的使用的qq版本有关,例如qq20xx(0808)的标识为0x0a0x1d。

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

  第3-4字节:

命令编号。

具体的命令编号含义在下面会给出。

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

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

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

  第5-6字节:

命令序列号。

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

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

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

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

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

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

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

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

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

  因此qq的数据包头可以如下定义:

(下列数据结构不能数据对齐)

  #pragmapack

(1)/*qq数据包固定头部*/typedefstructqq_head{

  unsignedcharhflags;

unsignedshortversion;

unsignedshortcmd;

unsignedshortsequence;

  /*固定数据0x02(十六进制)*//*使用的协议版本号,网络字节序*//*命令,表示本数据包的性质,网络字节序*/

  /*序列号,参照的tcp方式,具体含义间上文,网络字节序*/

  }qq_head_t;

  /*udp数据包头部*/

  typedefqq_head_tudp_qq_head_t;

  /*tcp数据包头部*/typedef(qq用的是什么协议)structtcp_qq_head{

  unsignedshortpacklen;

qq_head_thead;

  /**/

  }tcp_qq_head_t;

#pragmapack()包尾:

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

在包头和包尾中间的包数据则不同类型的包有所不同。

  qq的命令:

(本地字节序)

  qq命令字,即qq报头数据结构中的cmd项,位于数据报头的3-4两字节,是一系列的表示但前数据包内容作用的标识。

在本文中用枚举的方式把网络上已经分析出来的部分命令列举如下:

  typedefenum{

  qq_cmd_logout=0x0001,

  /*注销登录*/

  /*在线保持信息*//*更换用户登录*//*更新用户信息*//*搜索用户*/

  /*获取用户信息*/

  /*不需认证方式添加好友*/

  qq_cmd_keep_aliVe=0x0002,

  qq_cmd_Reg_new_id_2=0x0003,qq_cmd_update_inFo=0x0004,qq_cmd_seaRch_useR=0x0005,qq_cmd_get_useR_inFo=0x0006,qq_cmd_del_FRiend=0x000a,

  qq_cmd_add_FRiend_wo_auth=0x0009,qq_cmd_buddy_auth=0x000b,qq_cmd_Reg_new_id_1=0x0011,qq_cmd_ack_sys_msg=0x0012,qq_cmd_send_im=0x0016,qq_cmd_RecV_im=0x0017,qq_cmd_login=0x0022,

  /*删除好友*/

  /*需要认证的方式添加好友*/

  /*设置(隐身、示忙等)状态*/

  /*注册新id*//*确认收到系统消息*/

  qq_cmd_change_online_status=0x000d,

  /*发送消息*/

  /*收到消息(服务器发起)*/

  /*在对方好友列表上删除自己*/

  /*获取好友清单*/

  /*获取在线好友*/

  /*登录*/

  qq_cmd_RemoVe_selF=0x001c,

  qq_cmd_get_FRiends_list=0x0026,qq_cmd_get_FRiends_online=0x0027,qq_cmd_gRoup_cmd=0x0030,

  qq_cmd_RecV_msg_sys=0x0080,}qq_cmd_t;

  /*群操作指令*/

  /*收到系统消息(服务器发起)*/

  qq_cmd_RecV_msg_FRiend_change_status=0x0081,/*收到好友状态改变消息*/上面的命令对应解释的正确与否,因环境、时间、技术等原因没有进行逐个证实。

但是重要的命令:

注销,登录,收发消息四个命令是确认的。

在这再次感谢网络上未谋面的朋友的努力分析。

  qq内容加密算法

  qq的消息(本文中所有的qq消息均指聊天内容,其他如视频,文件传输等不在列)采用tea。

tea(tinyencryptionalgorithm)加密算法是在1994年由英国剑桥大学的davidwheeler和Rogerneedham所发明的一种加密方法。

大概来说,它是使用128bit密钥加密64bit数据产生64bit输出的一种算法。

这种算法的可靠性是通过加密轮数而不是算法的复杂度来保证的。

具体的算法可以参考:

/retype/zoom/d343d14133687e21af45a917pn=4&

x=0&

y=0&

raww=642&

rawh=269&

o=jpg_6_0_______&

type=pic&

aimh=201.12149532710282&

md5sum=cf48530d7ffe75d7a14f7d19fb452407&

sign=5cff4d1f57&

zoom=&

png=167-444&

jpg=5101-43205"

target="

_blank"

>

点此查看

  012345678(b)

  表二:

解码后登录成功应答协议,本数据报使用密码两次md5解码

  响应方:

服务器样本

  成功登录的样本:

(红色密钥部分使用qq密码的md5的md5作为密钥解密16字节原内容得到)000:

0061425845556b58(00登录成功,响应报第一字节表示登录结果,下文将给出其他标识)008:

7a425736786e4941(登录成功,后续通讯内容的密钥,c2s和s2c均用此密钥,失败则不同)016:

5901825d9040e7a7(登录的qq号码)

  024:

e30Fa07F0000011F(前四个字节为客户端ip,后两个字节为对应端口)032:

403F5122da030a5b

  040:

8350d29155aeFc3

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

当前位置:首页 > 考试认证 > 公务员考试

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

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