QQ2006协议分析之一 登录篇

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

          QQ版本: Tencent QQ 2006 B3

          QQ号码: 9219811

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

          QQ2006协议分析之一 登录篇_第1张图片

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

QQ2006协议分析之一 登录篇_第2张图片

        现在简单的介绍一下数据包的组成,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 a 9 0f a0 1f 40 00 3c   a0 cc 02 0f 4b 00 ba 25   1....@.< ....K..%

0030  09 00 8c ae e 3 c 8 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 f 0 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 a 6 73 dd 84   a 9 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  c 7 03
蓝色部分用第一步的红色Key解密后为

01 00 05 00 00 20 54 37 00 16 29 19 F 9 E 2 C 0 59 32 7A FE 6E E7 69 C 4 77 F 7 D2 AD 0B 62 32 83 E 3 A 0 6A 28 BD 88 52

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

     

   1.3  请求登录数据包:

0020  31 a 9 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 c 9 4f 6e e0 26 65  74 e3 23 53 a 3 ee 45 73   ...On.&e t.#S..Es

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

0060  67 e3 54 80 f 5 95 f 9 df  af c4 6a 22 45 a 9 21 b 1    g .T..... ..j"E.!.

0070  6e 26 5a bd 3a ae 28 cb  39 24 f 8 89 95 c 0 98 c 2   n&Z.:.(. 9$......

0080  70 d9 1a 57 84 90 e 5 a 8  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,.

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

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

00c 0  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 a 0 f 0   c 8 38 7f 65 a 7 ce ed 9d   .O...... .8.e....

00f 0  f 4 23 81 5d cd b5 58 03  89 a 3 87 e1 89 cc 9f 90   .#.]..X. ........

0100  c 6 f 3 bf 59 6f 02 d0 70  86 80 84 12 d 6 a 6 86 fc   ...Yo..p ........

0110  b0 1e 4d af 0e 2e 44 a 7  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  c 9 4d 9a 13 83 1f 54 ea  4b 9e 11 c 9 1b 43 fb d0   .M....T. K....C..

0150  50 c 0 5b 24 c 7 c 3 79 46  ba 79 9b 89 b0 5f ed 1a    P.[$..yF .y..._..

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

0170  ef fb d 7 c 0 e6 54 01 a 3  00 d8 5c a2 8f 40 a 6 ff   .....T.. ../..@..

0180  24 a 3 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 a 8 c 2 33 ac d0 37 6c    _``~e.*. ...3..7l

01a 0  44 17 01 f 5 d6 6a 20 a 0  b9 3b 3c f 5 a 8 16 0c 04   D....j . .;<.....

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

01c 0  e2 10 84 bf 0c 45 b 4 c 8  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..}

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

01f 0  2f 73 6f 36 20 1e b1 b 4   f 1 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 c 8   f 6 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  a 6 ef 17 2f 4e d5 3e a7  17 c 6 53 3a 4b 75 cc e3   .../N.>. ..S:Ku..

0070  0f 86 05 07 85 27 f 3 a 9  95 a 2 23 05 fd d4 df 53   .....'.. ..#....S

0080  e3 4a fc 82 80 6d e2 5c   e3 12 50 6d c 7 a 2 1c 4a    .J...m./ ..Pm...J

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

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

00b0  55 ed f5 ff 3c d 1 c 5 0f   77 aa 18 d6 e0 39 a 8 db   U...<... w....9..

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

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

00e 0   a 4 38 b 5 a 1 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 C 4 03 0A E1 10 08 C 3 07 02 94 CA 26 1F 7B F2 40 5B 9A 91 A 6 6D CF AC 9D 1A A1 13 3D 8D C2 CF 1F 40 CA 68 C 1 1B 1F 40 00 00 42 00 00 00 00 00 13 ED 46 FD 79 85 F 7 5D A3 56 79 14 BD F 2 A 6 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 C 5 E 7 C 9 44 C 8 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之类的消息,不太知道详细组成

 

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

你可能感兴趣的:(c,加密,qq,解密,服务器,工具)