`
hereson2
  • 浏览: 458456 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

QQ2006协议分析之一 登录篇

阅读更多
          特别声明本人是以研究和学习为目的的,我们并没有违反 QQ 的版权许可的东西。一切的协议分析都是把 QQ 当作黑箱分析,我们所做的一切都遵循中华人民共和国《计算机软件保护条例》。

          QQ版本: Tencent QQ 2006 B3

          QQ号码: 9219811

          先简单介绍一下工具,Ethereal,貌似强大不过不是很好用的抓包工具-_-#,给个截图:

        

          还有就是QQ_Debuger,我写的加密解密分析工具,可以到我的空间里面下载

        现在简单的介绍一下数据包的组成,QQ的数据包分为发出的包和接收的包两种,总体来说这两种数据包都包含3部分,包头,加密包体,包尾,只是出和入的包头有些不同

        发送的数据包组成

        1. 11位包头

             00     0x02  QQ数据包开始标志

             01-02       QQ的版本号,2006B3为0x0f4b

             03-04       请求的命令

             05-06       随机序列号,标志包的唯一性

             07-10       4个字节的QQ号码   例如 9219811 就是 00 8c ae e3  

        2.  加密的包体,密钥是什么要具体看是什么包,解密可以用我的工具来解

        3.  包尾部   1个字节 0x03   QQ数据包结束标志

        接收的数据包就没有了后面的四位QQ号码,前面的都是一样的,对应的.

        简单介绍一下QQ的登录流程,简化来说分为2步

        第一步,请求LoginToken;第二步,发送带LoginToken的登录数据包

        1.1 请求LoginToken:

        包的组成:              1 包头,  命令QQ_CMD_REQUEST_LOGINTOKEN = 0xba;

                                       2 包体,  0-15 是随机的Key

                                                      后面的内容是随机的Key加密数组01 00 05 00 00 00 00的结果. 数组是固定的,                                                 不知道用途

                                       3.包尾 具体数据包如下

0020  31 a9 0f a0 1f 40 00 3c  a0 cc 02 0f 4b 00 ba 25   1....@.< ....K..%

0030  09 00 8c ae e3 c8 55 40  00 ab 95 05 63 ae 4b e6   ......U@ ....c.K.

0040  ec c7 22 38 b3 15 e5 63  0c 83 58 32 f0 e0 7e 1b   .."8...c ..X2..~.

0050  76 90 e3 88 03 e1 97 38  5f df a5 76 d1 03         v......8 _..v..
      
               灰色是头部,红色是Key,蓝色是加密部分,最后是结尾
     
      1.2  LoginToken服务器返回部分:
    

0020  00 08 1f 40 0f a0 00 40  45 94 02 0f 4b 00 ba 25   ...@...@ E...K..%

0030  09 89 74 42 01 bf 7d cd  ba 74 6b ee 28 74 83 b7   ..tB..}. .tk.(t..

0040  80 70 41 88 a6 73 dd 84  a9 dd d9 46 2f 8b f8 86   .pA..s.. ...F/...

0050  7d b8 59 6a 23 33 50 41  56 50 8b 96 1b a9 e5 ab   }.Yj#3PA VP......
0060  c7 03
蓝色部分用第一步的红色Key解密后为

01 00 05 00 00 20 54 37 00 16 29 19 F9 E2 C0 59 32 7A FE 6E E7 69 C4 77 F7 D2 AD 0B 62 32 83 E3 A0 6A 28 BD 88 52

绿色为LoginToken长度,粉红色部分为请求的LoginToken

    

   1.3  请求登录数据包:

0020  31 a9 0f a0 1f 40 01 dc  99 34 02 0f 4b 00 22 25   1....@.. .4..K."%

0030  09 00 8c ae e3 93 b6 76  6b dc ca b1 94 13 4f e2   .......v k.....O.

0040  00 12 c9 4f 6e e0 26 65  74 e3 23 53 a3 ee 45 73   ...On.&e t.#S..Es

0050  c7 33 6c 5d d3 a4 2e b3  5e 89 ce 6a 7f 90 89 54   .3l].... ^..j...T

0060  67 e3 54 80 f5 95 f9 df  af c4 6a 22 45 a9 21 b1   g.T..... ..j"E.!.

0070  6e 26 5a bd 3a ae 28 cb  39 24 f8 89 95 c0 98 c2   n&Z.:.(. 9$......

0080  70 d9 1a 57 84 90 e5 a8  8f 5e a4 23 22 fd 00 cb   p..W.... .^.#"...

0090  36 27 09 8f a5 e1 db ea  5a 32 53 4a 22 42 2c 1e   6'...... Z2SJ"B,.

00a0  0a 5f 3d 85 63 dc 9b ef  a4 da f5 93 25 20 a4 2e   ._=.c... ....% ..

00b0  0e 51 aa e4 61 98 bf 15  65 31 ce 0f 44 d4 57 2d   .Q..a... e1..D.W-

00c0  28 29 0f b5 4d f6 ee f3  47 e1 48 ae b1 98 ab 9a   ()..M... G.H.....

00d0  35 be 6f fd 0d 11 20 2a  71 ec 82 33 96 3a a4 7d   5.o... * q..3.:.}

00e0  1c 4f c6 e5 ae 03 a0 f0  c8 38 7f 65 a7 ce ed 9d   .O...... .8.e....

00f0  f4 23 81 5d cd b5 58 03  89 a3 87 e1 89 cc 9f 90   .#.]..X. ........

0100  c6 f3 bf 59 6f 02 d0 70  86 80 84 12 d6 a6 86 fc   ...Yo..p ........

0110  b0 1e 4d af 0e 2e 44 a7  1c ca 44 4f 66 cb 5c 7a   ..M...D. ..DOf.\z

0120  ed 4d ab be d5 7d 9f 59  27 dd 31 cd 8f c3 9f 9d   .M...}.Y '.1.....

0130  e4 5d 1a 5e d0 5a a5 8e  03 5d 7b 2f 95 5f 5f ee   .].^.Z.. .]{/.__.

0140  c9 4d 9a 13 83 1f 54 ea  4b 9e 11 c9 1b 43 fb d0   .M....T. K....C..

0150  50 c0 5b 24 c7 c3 79 46  ba 79 9b 89 b0 5f ed 1a   P.[$..yF .y..._..

0160  d0 63 13 87 1e b5 ad b5  cf 2e e2 c1 9a 0c 8f ba   .c...... ........

0170  ef fb d7 c0 e6 54 01 a3  00 d8 5c a2 8f 40 a6 ff   .....T.. ..\..@..

0180  24 a3 51 b9 d5 68 e2 bc  04 17 23 7f 77 af 05 7b   $.Q..h.. ..#.w..{

0190  5f 60 60 7e 65 14 2a a7  81 a8 c2 33 ac d0 37 6c   _``~e.*. ...3..7l

01a0  44 17 01 f5 d6 6a 20 a0  b9 3b 3c f5 a8 16 0c 04   D....j . .;<.....

01b0  f4 e5 6b 2a f4 b3 3b 70  58 2d a0 d1 51 e2 25 70   ..k*..;p X-..Q.%p

01c0  e2 10 84 bf 0c 45 b4 c8  37 5b c8 e0 d0 31 2f 8b   .....E.. 7[...1/.

01d0  83 df 97 d0 9f 8e ac e6  2e a8 ed f5 74 9c 04 7d   ........ ....t..}

01e0  f1 8e 14 6a a6 e1 04 0f  9b e9 d9 aa f5 99 b6 97   ...j.... ........

01f0  2f 73 6f 36 20 1e b1 b4  f1 ee 8a e5 64 03         



   这个包体够长,如果没记错的话是460位的加密部分,红色部分是解密的Key,解密后简化为:

01 A5 3A E4 B4 DB 42 E0 8E 4A 10 AA E3 94 4C 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3F F2 31 72 30 C8 95 7D D8 6A 49 0D F9 8E 44 EA 5B 0A 2F 69 E5 4B 54 71 9F 47 9A 17 C0 B8 52 1B 16 62 20 12 A7 F5 8B D1 6B 81 F1 4D 4E FE 90 51 BA 49 85 3C 16 64 BB BA AA FA 8F 9C A3 DF 38 EC 89 CC 76 01 40 01 30 99 C5 A8 00 10 59 0F D5 F7 AA 50 01 09 60 77 1C AC 29 B8 3D EB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

   好像共424位吧, 000 - 015 : 用密码的两次MD5作为密钥加密任意一个东西,服务器只看能不能正常解密,其他的不管.有人分析说这个东西变了,其实只是有些解密工具解不出这个包(可能是官方加的空字串),但是确是还是用TEA加密的.

                  016 - 051 固定组合

                  052       登录方式 正常 0x0a,隐身 0x28

                  053 - 068 固定组合

                  069       LoginToken的长度  这个版本是0x20 也就是32位长

                  070 - 070+LoginToken.Length  LoginToken内容

                  剩下的    固定组合

     1.4  登录数据返回包:

   这一步是关键部分了,服务器会返回一个数据包,解密包体后有4种结果,登录成功,重定向服务器,登录失败,密码错误.这个版本有点特别,登录成功事件的解包密钥是两次MD5的密码HASH,其他的事件则是初始化的Key.

   解出包体第一位代表登录状态 0x00 ->成功   0x01->重定向   0x05->登录失败  0x09->密码错误

   登录成功的情况:

 

0020  00 08 1f 40 0f a0 00 c8  f6 18 02 0f 4b 00 22 25   ...@.... ....K."%

0030  09 7f d6 7a 64 0d 2b 9a  a8 5c 01 56 e5 3b 38 ce   ...zd.+. .\.V.;8.

0040  ec a9 9d 5e 13 00 e3 87  ec bc 82 ce f3 cc e5 40   ...^.... .......@

0050  93 24 e6 db d0 31 53 08  91 0b 67 45 0a 01 07 01   .$...1S. ..gE....

0060  a6 ef 17 2f 4e d5 3e a7  17 c6 53 3a 4b 75 cc e3   .../N.>. ..S:Ku..

0070  0f 86 05 07 85 27 f3 a9  95 a2 23 05 fd d4 df 53   .....'.. ..#....S

0080  e3 4a fc 82 80 6d e2 5c  e3 12 50 6d c7 a2 1c 4a   .J...m.\ ..Pm...J

0090  b2 73 6b df b6 66 86 4e  3b 11 e0 fb 8e 65 45 f3   .sk..f.N ;....eE.

00a0  0d 4b c1 21 47 27 81 63  f7 28 0d dd 76 9c f8 e2   .K.!G'.c .(..v...

00b0  55 ed f5 ff 3c d1 c5 0f  77 aa 18 d6 e0 39 a8 db   U...<... w....9..

00c0  a6 7f de 1c 99 23 4d 64  46 02 e7 d0 97 62 34 08   .....#Md F....b4.

00d0  06 18 dd 37 c0 05 7c 2b  40 50 ca 2e 40 59 0b 93   ...7..|+ @P..@Y..

00e0  a4 38 b5 a1 d7 65 34 30  ab 03    



解密后

00 64 4B 63 79 6A 72 49 36 65 4E 44 75 70 44 34 61 00 8C AE E3 CA 69 87 D9 05 BA 7F 00 00 01 1F 40 45 2B 29 C4 03 0A E1 10 08 C3 07 02 94 CA 26 1F 7B F2 40 5B 9A 91 A6 6D CF AC 9D 1A A1 13 3D 8D C2 CF 1F 40 CA 68 C1 1B 1F 40 00 00 42 00 00 00 00 00 13 ED 46 FD 79 85 F7 5D A3 56 79 14 BD F2 A6 EB 8F BE F9 CB 28 79 6E 1E 9A C5 47 61 83 25 AD 25 00 00 00 01 00 00 00 00 00 00 00 00 CA 69 87 D9 45 2B 29 22 44 C5 E7 C9 44 C8 94 E8 00 0A 00 0A 01 00 00 0E 10 01 14 8F FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     



红色部分为SessionKey 64 4B 63 79 6A 72 49 36 65 4E 44 75 70 44 34 61,以后的通信很多都是用这个为密钥,后面记录了一些号码,IP,端口,上一次登录IP之类的消息,不太知道详细组成



如果是重定向或者登录失败,后面会跟上重定向的服务器地址和端口或者登录失败的原因.
分享到:
评论

相关推荐

    历年系统架构设计师考试试题分类精解_案例分析与论文篇

    - **(3) (h) 视频传输要求**:保证视频传输的分辨率和帧率体现了系统的性能要求,同时也反映了系统的质量标准之一,即保证用户体验,因此可以归类于安全性之下,因为这关系到系统的可靠性和用户信任度。 - **(4) (l)...

    委托协议书集合八篇.docx

    在IT领域,文档管理系统(DMS)是实现这一目标的关键工具之一。 - **文档管理系统(DMS)**:DMS是一种用于管理电子文档的软件系统。它可以帮助组织机构存储、管理和追踪文档,确保文档的安全性和合规性。 - **功能**:...

    转让协议书合集五篇_1.docx

    8. **协议生效与效力**:协议自签订之日起生效,双方各持一份,具有同等法律效力。 9. **法律适用**:虽然没有明确提及,但根据常规,此类协议通常会遵循中国内地的民法典及相关法律法规。 10. **其他法律考虑**:...

    lwm2m协议开发文档

    对象模型是LWM2M协议中的核心概念之一,用于定义设备上可管理的对象及其属性。每个对象都有一个唯一标识符,并且可以包含多个资源(Resource)。资源代表了设备上的特定信息点或控制点,如温度传感器的当前读数或...

    LumaQQ-Android qq 代码.zip

    本篇文章将聚焦于"LumaQQ-Android qq 代码.zip"这一压缩包中的源码,深入探讨其背后的技术实现和设计理念。 首先,LumaQQ是Android版QQ的一个开源项目,它提供了一个学习和研究QQ客户端架构、模块化设计以及优化...

    有关承包协议书4篇.docx

    - **建筑面积**:对于建筑工程而言,建筑面积是决定工程规模的重要指标之一。 2. **工程价款及付款方式** - 明确工程总价以及付款节点和比例。 3. **工程期限** - 开工时间和预计竣工时间,确保项目按时完成。 4....

    Android仿QQ邮箱客户端源码.rar

    在移动互联网时代,邮箱客户端是人们日常工作中不可或缺的工具之一,尤其对于企业用户来说,高效便捷的邮件处理能力至关重要。本篇文章将详细探讨一个Android平台上仿照QQ邮箱客户端开发的源码,通过对源码的分析,...

    QQ 源码 本着共享之目的~

    QQ源码分析与聊天技术详解 QQ作为中国乃至全球广泛使用的即时通讯软件,其源码的剖析对于理解网络通信、客户端-服务器架构以及实时消息传递等技术有着重要意义。本篇文章将围绕QQ源码中的关键技术和设计模式进行...

    c#编写的QQ空间相册照片获取工具

    QQ空间是中国最大的社交网络之一,用户可以上传照片到自己的相册,并设置不同的访问权限。这个工具利用了QQ空间的公开API(如果有的话)或者通过模拟浏览器行为,解析HTML页面结构,找到并下载相册中的图片链接。这...

    Android 仿QQ客户端及服务端源码.7z

    而QQ作为国内最受欢迎的即时通讯工具之一,其客户端的设计与实现一直是许多开发者研究和学习的对象。本篇文章将围绕“Android 仿QQ客户端及服务端源码”这一主题,深入剖析源码中的关键技术和设计思路,旨在为开发者...

    qq聊天

    这篇博文链接指向了作者jiasudu在iteye博客上分享的一篇关于“QQ聊天”实现的源码分析文章。虽然具体的源代码未在当前提供的信息中给出,但我们可以通过对QQ聊天功能的通用实现原理进行解析,来理解相关的知识点。 ...

    qq.rar_visual c

    通过分析这些图表,我们可以看到QQ如何将复杂的通信协议、数据结构和算法封装在简洁的用户界面之下。 Visual C++是Microsoft开发的一款集成开发环境,它支持C++语言,同时集成了MFC(Microsoft Foundation Classes...

    易语言-SmartQQ协议

    在信息技术领域,网络通信是不可或缺的一部分,而QQ作为中国最流行的即时通讯工具之一,其内部的通信协议一直是开发者和爱好者关注的焦点。本篇将深入探讨“SmartQQ协议”及其源码,旨在帮助读者理解其工作原理,为...

    java语言程序设计提高篇+进阶篇第十版

    8. **垃圾收集与内存管理**:Java的自动内存管理是其魅力之一。书中探讨了垃圾收集的工作原理、内存泄漏的预防,以及如何调整JVM参数以优化性能。 9. **设计模式**:作为软件工程的最佳实践,设计模式在提高代码...

    Android 仿QQ客户端及服务端源码.rar

    QQ作为中国最流行的社交软件之一,其功能涵盖了聊天、群聊、文件传输、动态分享等多个方面,因此,仿制这样一个应用需要对Android的UI设计、网络通信、数据存储和多线程处理等技术有深入理解。 1. **UI设计**:源码...

    VC++编写QQ聊天源代码(绝对好)

    本篇文章将深入探讨如何使用VC++来编写QQ聊天的源代码,这对于想要学习网络编程、客户端开发或者对即时通讯技术感兴趣的开发者来说,是一份宝贵的学习资料。 首先,我们需要理解QQ聊天的核心功能。即时通讯软件主要...

    Android仿QQ客户端及服务端源码.zip

    - 实时消息推送是QQ客户端的核心技术之一,通常采用WebSocket或长轮询技术。开发者需要掌握如何实现在线状态同步和即时消息推送。 5. **数据库管理**: - 数据存储通常使用SQLite数据库,用于保存用户信息、聊天...

    应用源码之QQ_UI之分类菜单DEMO.zip

    本篇将深入探讨一个关于QQ UI的分类菜单DEMO,通过源码分析,我们可以了解到如何在Android应用中创建高效、直观且美观的分类菜单。这个DEMO主要涉及到了JAVA ANDROID编程语言,同时也适用于毕业设计和代码学习,对于...

    android 高仿QQ源码

    - QQ客户端的UI设计是其成功的关键因素之一,高仿QQ源码会展示如何利用Android的布局组件(如LinearLayout、RelativeLayout、ConstraintLayout等)和自定义View来构建与原版QQ相似的界面。 - 动画和过渡效果的实现...

Global site tag (gtag.js) - Google Analytics