`
pcajax
  • 浏览: 2195028 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

通过QQ2010协议技术详细分析QQ登陆过程

阅读更多

来自#博客园#文章,七月份的时候突然对QQ协议产生了些兴趣,于是这几个月有空就研究QQ协议,目前对QQ2010的协议已经分析得差不多了。QQ登录分为UDP和TCP登录,还支持代理登录。默认是UDP登录。UDP登录端口服务器为8000,本地端口一般是从4000开始选择,如果该端口已经被占用,则加1再测试,一直测试到一个没有被占用的端口。TCP登录服务器一般是80或者443端口,本地端口选择方式和UDP一样。

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

1. 0×0091 Touch包

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

0×0091发送包:

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 //包尾
]

0×0091接收包:

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 0×0030获取会话密钥

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

0×0030发送包

0×0030接收包

以上就是一个完整的QQ登录流程,我们可以看到,腾讯对于登录的设计是相当巧妙而安全的,既能安全的将客户端密码账户传递到服务器端验证,又能保证数据即使被截获也无法获取太多有用的信息,不过个人觉得部分登录过程有些冗余,一些数据包可以整合为一个直接发送至服务器端。

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


分享到:
评论

相关推荐

    安卓QQ登陆协议示例(c#).zip

    【标题】:“安卓QQ登陆协议示例(c#).zip”是一个关于使用C#语言实现的安卓QQ登录协议的示例代码包。这个标题表明我们将会深入探讨如何在Android平台上使用C#来处理与QQ服务器之间的通信,实现用户登录功能。 ...

    Python安卓QQ5.8协议源码

    通过分析和学习这套Python安卓QQ5.8协议源码,开发者不仅可以深入了解QQ的通信机制,还能提升网络编程、加密算法、数据解析等方面的技术能力。同时,这也为开发自己的即时通讯应用提供了宝贵的参考。不过,需要注意...

    最新分析的QQ登陆协议

    最新分析的QQ登录协议揭示了其中的一些关键技术和流程,这对于开发者来说具有重要的学习和研究价值,尤其是对于那些希望实现与QQ平台集成的应用或者想要深入理解网络通信协议的人来说。 首先,QQ登录协议涉及的主要...

    Web QQ协议 客户端通讯工具

    Web QQ协议是腾讯为网页版QQ设计的一种通信规范,它允许用户通过浏览器进行即时通讯,而无需安装传统的桌面客户端软件。 【描述】中提到的“开发webQQ,客户端类似QQ的通讯聊天工具”进一步说明了目标是创建一个...

    android qq协议 源代码

    在IT行业中,尤其是在移动通信和社交应用开发领域,QQ协议是一个重要的研究对象,因为它涉及到如何在Android平台上实现QQ客户端的功能。这份"android qq协议 源代码"提供了一个宝贵的资源,帮助开发者理解并实现QQ的...

    QQ2009 协议以及登陆QQ源码

    同时,现代的QQ协议还包含了群聊、视频通话、游戏等多种服务,结构和复杂性远超QQ2009。 总的来说,研究QQ2009的协议和源码不仅有助于理解早期即时通讯软件的设计原理,也是对网络编程、安全加密和协议解析等技能的...

    PC QQ2011登陆及聊天过程分析

    首先,QQ登陆过程可以分为以下几个步骤: 1. **Touch**:这一步是客户端向服务器发送一个初步的触达请求,表明用户正在尝试登陆。在这个阶段,客户端会发送一个包含特定版本号和命令的包,例如在QQ2011中,这个命令...

    最新2018年11月 可用qq登陆协议 易语言源码 开源无模块

    QQ协议,全称为腾讯QQ的网络通信协议,是QQ客户端与服务器之间进行通信的一系列规则和规范。它涉及的消息类型包括但不限于登录、聊天、好友管理等。了解和解析这些协议,可以帮助开发者创建自定义的QQ客户端或者进行...

    AndroidQQ-Python(可登陆-注销-发好友消息-发群消息)-2018-08-18

    由于这些协议通常是不公开的,开发者需要通过分析网络封包,使用Wireshark等工具捕获并解析QQ的网络流量,才能理解其工作原理。这个项目涉及到了协议分析和模拟,这是一项技术含量较高的任务,需要对TCP/IP协议栈有...

    qq登陆界面测试计划-文档.pdf

    QQ登陆界面测试计划是确保QQ语音聊天软件登录功能稳定、安全和高效的重要环节。以下是该测试计划的关键细节和实施步骤: 1. **概述** QQ作为一款由腾讯公司开发的热门语音聊天软件,其登陆界面的测试至关重要。...

    易语言QQ空间读取已登陆的QQ登陆

    这种交互通常涉及到Windows API调用,通过API函数获取系统中运行的QQ进程信息,查找并解析QQ登录状态的相关数据。在易语言中,这一过程可能包括创建进程句柄、查找窗口、发送消息等操作,以达到读取已登录QQ账号的...

    QQ批量登陆工具 附源码

    对于QQ批量登陆工具而言,它通过读取外部文本文件(如"qq.txt")中的QQ号码,然后利用内置的登录逻辑和接口,模拟用户行为,实现快速登录。这种技术的实现依赖于对QQ登录协议的理解和编程技术,比如可能用到了HTTP...

    (模拟qq)登陆器

    通过分析和理解这个模拟QQ登录器,开发者可以学习到网络编程、身份验证、加密解密、GUI设计以及错误处理等多方面的知识,这些都是软件开发中非常重要的技能。对于初学者来说,这是一个很好的实践项目,可以帮助他们...

    网页QQ 3.0 协议(加详细代码)

    网页QQ 3.0协议是腾讯推出的一种基于Web的即时通讯技术,允许用户在网页上实现QQ聊天功能,而无需安装传统的桌面客户端。这个协议主要涉及到网络通信、JSON数据格式、HTTP请求以及JavaScript等技术。下面我们将深入...

    易语言QQ登陆器获得QQ密码

    5. 源码分析:对于“易语言QQ登陆器获得QQ密码源码”而言,分析源代码可以帮助我们理解攻击者的策略,包括如何模拟登录过程,如何处理加密数据,以及可能存在的漏洞。这也为安全专家提供了研究反制措施的素材。 6. ...

    最新腾讯WEBQQ登陆协议JS加密过程及代码

    通过分析给定的加密过程代码,我们可以了解整个加密流程,并掌握其中涉及的关键函数和技术要点。 #### 二、加密过程解析 根据描述中的加密过程,我们可以将其分为以下几个步骤: 1. **获取用户输入**:首先通过...

    易语言个性QQ登陆器

    综上所述,《易语言个性QQ登陆器》集成了易语言编程、数据编码解码、数值转换和用户交互等多种技术,展示了易语言在实现实际应用中的灵活性和实用性。对于学习易语言或者想要深入理解QQ登录流程的开发者来说,这是一...

    QQ批量登陆C#开发

    QQ批量登录C#开发是一项技术性较强的工作,主要涉及到网络通信、身份验证、多线程以及C#编程语言的应用。以下是对这一主题的详细解析: 1. **C#编程基础**:C#是.NET框架的主要编程语言,由微软公司开发。它的语法...

    易语言QQ登陆器工具

    4. **腾讯QQ协议**:研究并模拟QQ客户端与服务器间的通信协议,这通常涉及解析和构造特定的网络报文。 5. **用户界面设计**:使用易语言提供的图形用户界面(GUI)组件,创建简洁易用的登陆界面。 6. **错误处理**:...

    易语言卡iphoneQQ登陆源码

    "易语言卡iphoneQQ登陆源码" 是一个使用易语言编写的程序,用于模拟iPhone设备登录QQ的源代码。这个程序可能包含了模拟网络请求、解析数据、处理加密等技术,对于学习移动应用登录机制和网络通信有很好的参考价值。 ...

Global site tag (gtag.js) - Google Analytics