QQ2010协议分析(登录篇)

标签: qq2010 协议 分析 | 发表时间:2011-01-05 22:52 | 作者:shiqishe Rommel
出处:http://www.cnblogs.com/

七月份的时候突然对QQ协议产生了些兴趣,于是这几个月有空就研究研究QQ协议,目前对QQ2010的协议已经分析得差不多了。现在跟大家分享一下我的成果。

QQ登录分为UDP和TCP登录,还支持代理登录。默认是UDP登录。UDP登录端口服务器为8000,本地端口一般是从4000开始选择,如果该端口已经被占用,则加1再测试,一直测试到一个没有被占用的端口。

TCP登录服务器一般是80或者443端口,本地端口选择方式和UDP一样。

这些登录方式登录设置里面可以自由选择。但是无论哪种方式登录,其登录流程和数据包格式都是一样。QQ登录时需要进行6次与服务器的交互,每次交互均伴随着登录相关信息的搅浑。QQ登录主要分6步。

1.0x0091 Touch包
该数据包是QQ客户端登录时发送的第一个包,它的作用在于测试远程服务器是否能够正常响应,根据我们的抓包分析,对于不同的QQ号码段,提供服务的QQ服务器是不相同的,对于QQ会员有专门的QQ会员服务器。在对QQ客户端的回应包中,如果连接的服务器不对该QQ号码提供服务,它会返回另外一个服务器地址,让客户端重新连接该地址。

     0x0091发送包:

  02 1E 07 00 91 5B B8 04 EE D4 E9 02 00 00 00 01
  01 01 00 00 64 2F 6A 84 FA 78 CC 16 51 86 A7 B8
  1C 55 E8 29 6B C8 50 95 FB 5A CE E8 6C 89 0A C9
  83 D0 68 51 DB 6E D1 93 C1 32 11 9B 84 13 EF 7D
  4B 55 8C 08 6C F3 F0 5F 11 16 26 E4 00 68 0D 98
  02 BC 06 B9 4E E2 03
  [
  02 //包头
  1E 07 //版本号
  00 91 //命令
  5B B8 //包序号
  04 EE D4 E9 //QQ号码:82760937
  02 00 00 00 01 01 01 00 00 64 2F //固定,QQ版本号不同则不同
  6A 84 FA 78 CC 16 51 86 A7 B8 1C 55 E8 29 6B C8 //0x91密钥
  00 01 //固定两字节
  00 00 08 04 01 E0 //0091Data01(在后面的命令里面要用到的)
  00 00 03 20 00 00 00 01 00 00 0B BF //0091Data02(在后面的命令里面要用到的)
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //首次发送为15字节0
  03 //包尾
  ] 

    0x0091接收包:

     02 1E 07 00 91 5B B8 04 EE D4 E9 00 00 00 C0 EB
  D0 BF C5 F9 E1 F2 C9 51 9D 3B 26 07 B5 AD 46 49
  49 C4 49 D7 69 36 9E 11 8E 24 2E A1 B3 AB 90 CE
  CA 38 C9 99 94 8E 0A 41 03 EB AC E7 C6 BA 34 FD
  64 9E E7 4B 3D 24 6F 44 0A 77 80 69 96 91 0C 00
  87 6B 51 25 E5 15 9F E3 54 6E B8 C6 1D 5F DE 40
  54 BB D8 0C 36 8D 03
  [
  02 //包头
  1E 07 //版本号
  00 91 //命令
  5B B8 //包序号
  04 EE D4 E9 //QQ号码:82760937
  00 00 00 //固定全为0
  00 //接触成功
  4D 16 07 CC //登录时间:2010-12-25 23:03:40
  7D 47 C8 04 //登录IP地址:125.71.200.4
  00 00 00 00 00 00 00 00 //固定8字节0
  00 38 //0091_Token长度:56字节
  6E F0 FB 35 5F 8E 65 0F 77 E7 A7 D0 AE 69 8C 4D
  EF 43 41 89 BB 79 9C B9 B5 0C 4C 86 5E 8D A0 CB
  84 D7 66 69 CF 63 E9 0D 80 48 F4 E6 C1 30 A7 88
  7E B0 68 0A E6 8C FC D4
  00 //接触成功
  03 //包尾
  ]

2 0x00BA获取验证码
因为部分QQ号码可能存在异地登录,或者QQ号码被盗发送大量垃圾信息,或者用了挂机软件或者挂机网站挂机,腾讯服务器检验到这些非正常的QQ情况时即会要求输入验证码。以下分析我都直接截取QQAnalyzer的分析图片。贴分析代码比较麻烦,关于QQAnalyzer的介绍和下载请看这篇博客:http://www.cnblogs.com/83008911/archive/2010/10/09/QQAnalyzer.html

0x00BA发送包

 

0x00BA接收包

3 0x00DD密码验证

该数据包的作用是将本地QQ的密码发送给服务器端进行验证。

0x00DD发送包

0x00DD接收包

4 0x00E5数据校验

该数据包主要用于校验前几个数据包的Token数据,如果通过验证,服务器端会返回本次登录的时间和IP地址等信息。 

 

0x00E5发送包

0x00E5接收包

5 0x00E3数据校验

0x00E3发送包 

 

0x00E3接收包 

6 0x0030获取会话密钥

该数据包是QQ登录流程的最后一个数据包,主要用于向QQ客户端返回会话密钥(Session  Key),该会话密钥由服务器端生成,目前不知道其生成算法。但是估计和QQ号码,登录IP,登录时间以及QQ密码有关。

0x0030发送包

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0x0030接收包 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上就是一个完整的QQ登录流程,我们可以看到,腾讯对于登录的设计是相当巧妙而安全的,既能安全的将客户端密码账户传递到服务器端验证,又能保证

数据即使被截获也无法获取太多有用的信息,不过个人觉得部分登录过程有些冗余,一些数据包可以整合为一个直接发送至服务器端。

下一篇博客即将为大家 带来QQ 2010的消息发送和接收分析,还有QQ的右下角广告弹出窗口的分析,目前发现这个弹出窗口存在一些漏洞我们可以利用从而轻易

获取QQ的账号和密码。

腾讯。。。啦啦啦。。。

对QQ协议有兴趣的可以加这个群:62596902

 

 

 

 

 

作者: shiqishe 发表于 2011-01-05 22:52 原文链接

评论: 46 查看评论 发表评论


最新新闻:
· "一个扫地老太太"成2011网络第一"红人"(2011-01-06 20:55)
· 淘宝宣布B2C商城业务一年增长4倍(2011-01-06 20:42)
· 韩国警方称谷歌街景非法收集WiFi用户信息(2011-01-06 20:34)
· 支持AirPlay技术 新齐柏林飞艇惊现CES(2011-01-06 20:28)
· 手机QQ1.0(Android)Beta4发布:支持离线图片(2011-01-06 20:16)

编辑推荐:让能者不多得

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [qq2010 协议 分析] 推荐:

QQ2010协议分析(登录篇)

- Rommel - 博客园-首页原创精华区
七月份的时候突然对QQ协议产生了些兴趣,于是这几个月有空就研究研究QQ协议,目前对QQ2010的协议已经分析得差不多了. QQ登录分为UDP和TCP登录,还支持代理登录. UDP登录端口服务器为8000,本地端口一般是从4000开始选择,如果该端口已经被占用,则加1再测试,一直测试到一个没有被占用的端口.

RTSP协议分析

- - CSDN博客推荐文章
        RTSP(Real Time Streaming Protocol)实时流传输协议,是TCP/IP协议体系中的一个基于文本的应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC2326标准. 该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据.

【转】oauth2开放认证协议原理及案例分析

- - 研发管理 - ITeye博客
OAuth认证协议原理分析及使用方法. ,虽然 OAuth2还没有正式发布,但是国内外的OAuth2的采用情况几乎要完全替代掉OAuth1.1了. 像淘宝、腾讯、人人网、百度开放平台就已经采用Oauth2,新浪微博也发来邮件说是要很快上马OAuth2,彻底替换掉OAuth1.1. ,最新的版本是 2011年7月25号发布的,协议变化还是很快的,所以看到国内的一些已经实现的实例,再比照官方的 oauth2,会有些出入的.

Chrome 远程调试协议分析与实战

- - SegmentFault 最新的文章
某一天,A 君想获取 Chrome 页面中的性能数据,诸如时间、白屏和首屏等,因为需要和竞品进行对比分析,无法注入代码,该怎么办. 此时,你也许能想到开发者工具(DevTools),也许知道Timeline(包含浏览器完整的行为数据),该怎么自动获取到 Timeline 数据呢. 开发者工具(DevTools)是一个独立的 Web 应用程序(HTML+CSS+Javascript),被集成在浏览器中,通过 远程调试协议(remote debugging protocol)和浏览器内核进行交互,直接使用 Ctrl+Shift+I 呼出.

ftp协议分析:Passive模式和Port模式

- - 企业架构 - ITeye博客
FTP协议需要在客户机和服务器之间建立两个并行的TCP连接:“控制连接”和“数据连接”. 根据数据TCP连接建立的发起方的不同可以区分为Passive模式和Port模式. 这两种模式的本质区别是:建立“数据连接”的TCP连接时,是由ftp服务器发起,还是由客户端发起. 服务器发起的则为PORT(需要客户端在PORT命令中告知目标端口),客户端发起的则为PASSIVE(需要服务器端在PASSIVE的应答中告知目标端口).

Chrome 远程调试协议分析与实战

- - FEX 百度 Web 前端研发部
某一天,A 君想获取 Chrome 页面中的性能数据,诸如时间、白屏和首屏等,因为需要和竞品进行对比分析,无法注入代码,该怎么办. 此时,你也许能想到 开发者工具(DevTools),也许知道 Timeline(包含浏览器完整的行为数据),该怎么自动获取到 Timeline 数据呢. 开发者工具(DevTools)是一个独立的 Web 应用程序(HTML+CSS+Javascript),被集成在浏览器中,通过 远程调试协议(remote debugging protocol)和浏览器内核进行交互,直接使用 Ctrl+Shift+I 呼出.

中国移动企业短信通平台EMPP协议分析

- - 行业应用 - ITeye博客
中国移动企信通地址:http://sms.sh.chinamobile.com/qxt/index.jsp.     最近要为手上一个项目设计短信发送,简单分析了一下,最终将使用中国移动企信通作为工具.     需要采用硬件设备,还要上机架,进行软件安装与配置,非常繁琐,并且成本比较高.     听某使用mas机的项目反映,延时比较严重,从几分钟,甚至出现过十几分钟的情况.

基于XMPP协议的Android即时通信系统原理分析

- - CSDN博客Web前端推荐文章
设计基于开源的XMPP即时通信协议,采用C/S体系结构,通过GPRS无线网络用TCP协议连接到服务器,以架设开源的Openfn'e服务器作为即时通讯平台.          系统主要由以下部分组成:一是服务器,负责管理发出的连接或者与其他实体的会话,接收或转发XML(ExtensibleMarkup Language)流元素给授权的客户端、服务器等;二是客户终端.

memcached协议

- - 开源软件 - ITeye博客
旧版: http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt. 新版: https://github.com/memcached/memcached/blob/master/doc/protocol.txt.

https协议

- - 互联网 - ITeye博客
SSL 协议的握手过程   .       为了便于更好的认识和理解 SSL 协议,这里着重介绍 SSL 协议的握手协议. SSL 协议既用到了公钥加密技术(非对称加密)又用到了对称加密技术,SSL对传输内容的加密是采用的对称加密,然后对对称加密的密钥使用公钥进行非对称加密. 这样做的好处是,对称加密技术比公钥加密技术的速度快,可用来加密较大的传输内容,公钥加密技术相对较慢,提供了更好的身份认证技术,可用来加密对称加密过程使用的密钥.