登录、注销、心跳信息等(0x0091、0x0062、0x00BA、0x00DD、0x0022、0x0001、0x0002)

登录、注销、心跳信息等( 0x0091 0x0062 0x00BA 0x00DD 0x0022 0x0001 0x0002 ):

QQ客户端版本:
QQ2008IIBeta1KB2,发布日期:
2008 - 11 - 19

协议版本号:
0x1237

QQ号码:
847708268

密码:
testtest

昵称:
测试QQ号

1 :接触服务器( 0x0091 ):

发送:
02   12   37   00   91   00   00   32   87   00  6C  50   51  C1 8C  88   70   56   39  7F D0 A2 4A AF  56  0D  55   14  2F  21   08  8F  66  F7 5A  79   71   02  2D  48   27   21   21  A8  76  8B E8 8D 1A B8  83  6C  97  C0  61  BA 2B  40  7E  03  

解密:
00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   // 15字节0x00

接收:
02   12   37   00   91   00   00  4B 7A A3 8C  07  F0  19  9F C5  71  E3  27  3F FB  31   40   03  

解密:
00   00   // 2字节0x00,表示接触服务器成功

2 :获取登录令牌( 0x0062 ):

发送:
02   12   37   00   62   22   23   32   87   00  6C  00   03  

包体:
00   // 1字节0x00,该包未加密

接收:
02   12   37   00   62   22   23   00   18  6A  48   95  C3 BE 6A BF 8C  62  E0 F9 D4 BC F9 A1  36  3F  30  E3 AD  73  D7 6C BF  03  

包体:
00   18   // 登录令牌长度
6A  48   95  C3 BE 6A BF 8C  62  E0 F9 D4 BC F9 A1  36  3F  30  E3 AD  73  D7 6C BF  // 登录令牌内容

3 :获取验证码( 0x00BA ):

发送:
02   12   37   00  BA  22   23   32   87   00  6C B2 F5 ED 6F 9A  36  7C  07  3E 3F BF 6A D4  81  2E BE  87  9A BE F8 D4  31   74  EE  82  A0 2E  22   71   54   07  3C  98   85   18   76   82  8B  09  CD  24  1F C0  79  A3  52  7E  47   02   81   41  CF 8A 4E 3D 6A 0C 5B  67  D0  46  EE 6C A7  03  

解密:
18   // 登录令牌长度
6A  48   95  C3 BE 6A BF 8C  62  E0 F9 D4 BC F9 A1  36  3F  30  E3 AD  73  D7 6C BF  // 登录令牌内容
03   00   05   00   // 获取验证码标志
00   00   00   00  子命令 (请求验证码图片一为00  00   00   00 ,请求验证码图片二为00  00   00   01 )
00   00   // ??

注意:该包会发送连续3次,数据相同。

接收:
02   12   37   00  BA  22   23  FF 9B  15  F1 DB 2F 2F D9  65  EC BF 0E C7 BD AB  00  C2 BC DF  08   25  3B A1  25  A6 E7 FF 1E 0B 6F 7F  10  9D 3B 4F  98  C4  28  6E D5  27  0E  06  C9 4E EC C8  70   00  5E E6 1D  40  CB  17   86   03  

解密:
03   00   05   00   // 跳过验证码标志
00   00   00   00  子命令
00   20   // 0x00BA令牌C长度
01  AA 3B 9A  32   04  8F  48  C8 CF  35  B6 C8 1A BC  62  6D  45   29   37  DD 6C D6 7B 5B  66  5D B9 C2 1F 5A DD  // 0x00BA令牌C内容

4 :密码验证( 0x00DD ):

发送:
02   12   37   00  DD  22   23   32   87   00  6C FB DB 6E CD  57  F8 C8 ED B2 F5 ED 6F 9A  36  7C  07   83  ED 8C  55   39  F7 F9  66   54  1F D1 5E C4  04   94   17  6F  02   72  E9 D4 C8 D6  81  F1  01   80   62  8C  18   48  D1  84  4D 4F CA  96  2D E5 4A F0 7D CB 5A  76  2B BE 1F  90  F3  03  0B 5E  91  6E 1A  06   54  A2  76  5C  26   42  DE D9  74   97  5C E2 C2  75  3B  22  CE F4 A6 3B F5 5E  49  1B EB 2C  18   11   59  4E 3B  14  4B 5B E6 6F 1F DC  95  5C 3B C9  85  7A EE  39  C0 7C 8E  93  C4  21   17   41  4C  03  

解密:
00  5F  00   00   08   04   01  E0  // 未知数据1
20   // 0x00ba令牌C长度
01  AA 3B 9A  32   04  8F  48  C8 CF  35  B6 C8 1A BC  62  6D  45   29   37  DD 6C D6 7B 5B  66  5D B9 C2 1F 5A DD 0x00ba令牌C内容 
00   20   // 密码验证串长度
45  DB D5 E5 EB  70  C2  70  ED A8 DE  82   05   83   17   17  E6 4B EA  54   39   00  CB 8C EC 8A D5  54   72  3F E6 3B  // 密码验证串内容
00   14   // 未知数据2长度
8A CB  49  AC  02  E2 F1 4A  71  C5  07  3E 8E  41  EF  28   81   72  2A  32   // 未知数据2(后4字节为前16字节的CRC32校验码)
00   03   // 未知数据3长度
00  A6  71   // 未知数据3(后两字为QQ密码的一次MD5的第二、三字节)

注意:
构造密码验证串的方法:
明文 
=  密码的一次MD5(16B) + 随机字节(4B)
密钥 
=  密码的两次MD5
密码验证串 
=  TEA加密(明文,密钥)

这里的密码验证串:
45  DB D5 E5 EB  70  C2  70  ED A8 DE  82   05   83   17   17  E6 4B EA  54   39   00  CB 8C EC 8A D5  54   72  3F E6 3B

用QQ密码的两次MD5解密后为:
05  A6  71  C6 6A EF EA  12  4C C0 8B  76  EA 6D  30  BB  // 密码的一次MD5
00   00   47  3E  // 随机字节 (前2字节固定为0x00)

接收:
02   12   37   00  DD  22   23  C7 E6 5E 4B C0 4F  25  6D  32   11  7E FB E3  04  CC DC  76  C8  03  0A  51   96  A3 7E BF 6F  90   24  8B B3  88  1A  41   09  9A AD 5A F9 1C 9F  08  B0 B2 FC  41  A6 4D EB  40  BE  48  D7 8C  38  5F C8  91   81  BC  75   68   43   82  4F  84  D0 AA  96   07   26  4F 5F 5C  49   45   97  E6 A7 8B  62  BB A9 A9  89  E0 1F BC C1  82   05  CC 1D  88   21   07   13   77  6A  19  5E FE B9 E3 A4  41   88   20  E7 7A  79  DF FE F6 CF  64  D7  18  D2  78   11  9E 9E  18  8C ED ED CF D0  59  6C 4A  75   88   24  B4  31  AA  93   93  E2 F3  48  A5 CC 6F 7A B5  32   61  C6 AD D7 4C  55   58  1F 3D  83   58  EF E2 5F 0A 5E 2D F6 DF D6  03  

解密:(密码正确时解密密钥为密码的两次MD5,否则为上一包中的临时密钥)
00   97   00   00   00   47  3E  00  未知数据1( 47  3E两字节跟上一包中的随机字节中的后两字节相同) 
20   // 未知数据2长度
F3  67   63   37  9F 1C  15   10  FE  91   72   81  CB D7 0B  68   85   35  9A  68   27   85  C7  07  5E  17  AA  76   41  C8 ED D5 未知数据2内容
00   20  未知数据3长度
34  7A A0  05  EA  03   92   40   62  D0  86  CD 0C 0C D1 F0 C5 6A 8F  80  F9  70   24  8A  52  5A EE B4 D6 EE  17   28  未知数据3内容
00   38  0x00DD令牌长度
CD 
56   50  3E  04  D3 D8  30  AE  65  2B 1B 8C AA BF AD 5F 4B CD  13  A2  75  FC F2 C3 D3 7F 8B F2  29  DB  94   87   92  6A FA  11   00  0B F7 7F F5  40  7B  32  FD 8C  42  AA EF  93   26   02  6F  37  9E  // 0x00DD令牌内容
4E  36   44   74   67   71   33  4B  45   76   38   50   32  7A  34  7A  // 0x0022请求包使用的临时密钥
00   00   00   00   00   00   // 未知数据4

5 :登录( 0x0022 ):

发送:
02   12   37   00   22   22   23   32   87   00  6C  00   38  CD  56   50  3E  04  D3 D8  30  AE  65  2B 1B 8C AA BF AD 5F 4B CD  13  A2  75  FC F2 C3 D3 7F 8B F2  29  DB  94   87   92  6A FA  11   00  0B F7 7F F5  40  7B  32  FD 8C  42  AA EF  93   26   02  6F  37  9E A1 7F  55   38  CE D6 AF E8 FD  48   52   97  A8 D3 EC  47  B0 FF  48  B2 0B  74  D6  98  6D 6F  47  A2 EA CE C0 CC D4 9A  55   19  F1  12  8F 3D A4  95  CF  81   77   50   83   70  C6 BF  35  AE  12  B5 C5 B8 CF E1  85  F6 E5 B1  48   41  AE CD  26   88   08  DC 7B  66  D3  61   09  C8 F8 EE 4A 7C  60  AA F4 CC  80   20  EE 9D B2 C9 B4 A0  67  EE  88   31  8F  42  FA A1 E0  41   88   59  D5 D3  22   16   29  3B 5A 3C 0D D6 3C 1B  79  2C 5A FC E4 3A  76   64   30   49   20   25   82  F6 DD B1  10   75  B9  82   78  5F 1F 3E  53  FF A7 ED  94  1B 1C  68  ED 9B 2E  78  7F  59  A7  58  FB  71  C7 EE  48  B2 9C DA  77  B2 7D D9  34  B9 A8 A0 E6 FE DE  51   79   67   32   98   75  AE  01  7D  44  A2  52  D0  10   59  4B 4B F0  39   51  EC B9  91  3C 0A 2A  13  1C AD 4C  96  CB 1F 5D C1  24  D7 8F FD CE AA 1A C2 4A  08   07  1E  86  0E 5B  77  FB C1 BB BD  99  D6 1D 2F  87   66   72   66   77  A6 9A 1A  34   97   03  4C  77  F4  71  F2 AF 4E 6F  56   14  A0  99  E7 FB F3 7F 1B  73  2E 9C  35  D1 4E  31   06  EA  11  C3 EF C4 4D F2 CC A6 FE DE  94   94  CC CD  82  F9  43  3F E0 CF 7B C8  28   40   31   11  B5  99   47  4A B0 3F  80  6D  25   63   61  F3 8D  07  FC  54  D1 5B C2  71   15  CC BB  12   29   45  BE  45  C9  46  E4  16  BD 7A E1  15   06  9C  94  4E 1E 1E 3E  19  7C 2F D9 F5  81   14   91  4F  93  E6  69  4B 2B 7D 5C FA BA 2A  32  CB DD F9 A9  89   66  B7  12   12  BF 3C  40  5D F4 8D D8 2B 8B  22  F5  88  DF  57  0B  93  6F  38  D8 E3 AC 6A F2  05   24   09   88  B6  69   17  D8  75  A5  71  4D  95   21   13  CC  98  BE  67   33  7D 4F  81   82  D9  62  DB AC E0 1D  32  6B 6E  24  EB  64  C6  37   24  6B 9E BB FE AD 5D D9 C1 1E CE  08   96  C0 D8 9D EC  95  F5 9A F5  18  C6 3E C6 0D FA 6C  99   75   36  4F D7 E0 FE 3C E5 EF  59   81  4B  72   85   91  D5 2C  94   83  AB A6  15  CD 9A  90  CF F3 E7 B4 0A 3B D1  87   86   09   33   76   25   47   09   75   49   90   28  D4 AF  00   36  9F  25   77   15  F3  03  

未加密包体:
00   38   // 0x00DD令牌长度
CD  56   50  3E  04  D3 D8  30  AE  65  2B 1B 8C AA BF AD 5F 4B CD  13  A2  75  FC F2 C3 D3 7F 8B F2  29  DB  94   87   92  6A FA  11   00  0B F7 7F F5  40  7B  32  FD 8C  42  AA EF  93   26   02  6F  37  9E  // 0x00DD令牌内容

加密包体解密:
00   00   00   // 未知数据1
20   // 密码验证串一长度
64   25   36  F6 CC B8 B6 C8 EC  85  D1  87   89  AA  82  D6 9C 6E  82  7D FA  28   53  9F  93   05  8D 1F D4 E1  81  FA  // 密码验证串一内容 (构成方法参照0x00dd密码验证串)
C8  01  8C 1E  06  CA 7D C9 E8 E0 D5 2D  01  D8  72  AF  // 密码验证串二内容(构成方法:QQ密码的两次MD5作密钥经TEA加密空串后的结果)
00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   // 未知数据二 (19字节0x00)
25   20  A9  43  A7 BF F9 D3 E5  70  D9 C9 0B 4D A9 0E  // QQ.exe程序文件的一次MD5
6D  // 本地QQ索引(用当前QQ进程个数异或密码验证串二 + QQ.EXE的MD5的每一个字节)
0A  // 登录模式 (0A表示正常登录,28表示隐身登录)
00   00   00   00   00   03   00   00   00   00   // 未知数据三
00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   // 未知数据四 (接触服务器包解密后内容???)
AA  55   69  EC  77   06   40   41   93   90  F6  31  E1 4B  37   83   // LocalComputerGUID (注册表HKLM\SOFTWARE\QQ下键值)
20   // 0x00BA令牌C长度
01  AA 3B 9A  32   04  8F  48  C8 CF  35  B6 C8 1A BC  62  6D  45   29   37  DD 6C D6 7B 5B  66  5D B9 C2 1F 5A DD  // 0x00BA令牌C内容
00   00   00   06   00   00   00   00   00   00   // 未知数据五
01   40   01   // 未知数据六
6E 5D FA  29   // 未知数据七
00   10   // 未知数据八长度
97  F9  80   76  A0 A5 6A AD  57  D6  66  BC CD 5F B3 9C  // 未知数据八
00   00   00   00   00   03   00   00   00   00   // 未知数据九
00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   // 未知数据十
02   // 未知数据十一
3D  76  2F  27   // 未知数据十二
00   10   // 未知数据十三长度
13  F1  65   04  BC A6 2D  69  DB  29   09  DD  04  B7  40   80   // 未知数据十三
00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   00   // 未知数据十四 (249字节0x00)

接收:
02   12   37   00   22   22   23   14   07   36  CC  47  5E F0  26   05  9E  29   65  ED DF  54   70   34  BE  26  AB D5  21   04  3F E2 8A F6  78   39   66  E8 C7 9C DA 3F EF CF 6D  19  7E  61  7A 7A A6 CF CA 8F  56  5E  04  5D  00  4B  98  8A EC  05   57  D0 9E  76  0C  13   09   49   81  D5  51  1A C2 BD  95  C9  69  7F  78  B6 AF 0C  39   86  1C 5C 1B FF CE F5 1B  58  B2 C1 C8  25   22  A0 8E  24  D9  44   96  C5 E8 6D  08  C5  91   96   87  2F 6D  08   49  0B  89   82   16  B6 A3 1C  35  1C 3A F2  34  D7 5C  12  F0 FF 6E 6F  07  E7 C0 C0 0B  28   79   92   29   67  FA  87   12   65  D6 DD DC 8F  84  7C  39   57   89  C0 2D  36  FB B7 F2  21  D1  90  B9 F7 6F 4B A2  01   28  7F  54  8D FC 5C  49  A8 F8 D1  96  AF AF 5D C9 E9  12  8F EC  30  1D D5 0D E6 4D A5 0E BE  68  8F  01   35  D4 DC EC F7  26  0A F5 8B 8B  20  9D E8 AB  53  A0 8B FC 4A  38   08   50   16   19  8D A8  39  BC AA  27  B0  96  8F 6F  71  1A 6F  73   59   74   66   24  EA C9  68   54   61   39  F8 1C 1F  37   83   02  4B 2B  86  B3  42   19   85   39  C6 C0 4A 5E A5 D8 C5  04  F1  05  A0 9B 9D 4C  85   58  8F FA A1  33   29  EB  64  D5  23  E3 AE 2E D3  19   40  F8  76  5A  03  

解密:(密码正确时解密密钥为密码的两次MD5,否则为上一包中的临时密钥)
00   // 登录成功标志
75   57   67  7A  44   71   37   49  4E  73   32   64   43   69   69   48   // 会话密钥
32   87   00  6C  // QQ号码:847708268
3B 9B  28  BA  // 客户端IP:59.155.40.186
0F A3  // 客户端端口:4003
7F  00   00   01   // IP:127.0.0.1
1F  40   // 端口:8000
49  AA B7 6C  // 本次登录时间:2009-03-02 00:27:24
03   // ???
0A  // 登录模式
00   00   // ???
69  FB C3 AA F0  36   45  8C B0  16   56   58  E7  35  AC A0  63  B8  78  0D C2  09  7C BA  82  D2  // ???
00   00   00   00   // IP
1F  40   // 端口:8000
DA  55  8A  42   // IP:218.85.138.66
1F  40   // 端口:8000
00   81   // ???
40   // ???
00   00   00   02   00   // ???
B6  20   65   76  5D 5D 0E 3C  24  1B D7 4C DE 7B AD  20  5F E9 8A FB B1 EF E5 3F EB  56  BF DB  99   40  A7  09   // ???
00   00   00   01   00   00   00   00   00   00   00   40   // ???
5A  13  9B BA  // ???
49  AA B4  62   // 上次登录时间:2009-03-02 00:14:26
49  AA B2 ED  // 未知时间:2009-03-02 00:08:13
49  AA B7  64   // 未知时间:2009-03-02 00:27:16
00  0A  00  0A  01   00   00  0E  10   03   14  8F FE 4F BB B6  63  C7  69  C3 F0  00   00   00   00   00   00   00   00   00   00   08   02   04   08   08   08   08   08   04   02   00   28  D6  39  E5  94  DD  72  C9 2C  02  6D  14  C9 A8  13  D4 7F C6  64  0F  95   66   09   87   71  DC  82   83   42   54  E8 4C B2  94  E6 A7  24   80   82  FE  76   00   30  7D  47  A0 3A  57  CE D2  40   84  7C  09   67  DD  84  B5 DA AC  61  F9  62   08   83  BC 4E  58   44   65   67  CA FB DC AF  38   35  D2 1E F9 7C  92   88   37  F4 E0  99   43   30  AB 6F  77   93  0C B6  // ???

6 :心跳信息( 0x0002 ):

发送:
02   12   37   00   02   22  E8  32   87   00  6C B4  05  E3  90  BF CE 4A A4 A5  52  4E 6F 3F  09   91  C0 F1  37  D9  34  E0  32   92  2F  03  

解密:
32   87   00  6C  // QQ号码:847708268
49  AA B7 6C  // 本次登录时间:2009-03-02 00:27:24

接收:
02   12   37   00   02   22  E8  11  3D  34   50   50   62   15  8F  89   05  3F  13   69   68   30  E8  60  EC 8D  43  AB 1A  50  E8 B4 7B 4F 7F C8 A6  04  B9  03  

解密:
00   // 成功标志
01   36  BD DD  // 在线用户数:20364765
3B 9B  28  BA  // 客户端外网IP:59.155.40.186
0F A3  // 客户端端口:4003
00  3C  // ???
49  AA B7 E4  // 服务器时间:2009-03-02 00:29:24
00   00   00   00   00   // ???

注意:心跳信息大概每隔一至两分钟发送一次。

7 :注销( 0x0001 ):

发送:
02   12   37   00   01   27  AC  32   87   00  6C  57  A8  65  5B  50   41   69  CB A9  05   00   03   38  F8 AF 4E 2D F9 B6  21   95  C3  75  C0 DC  68  C7  29  F8  88  8A  30   03  

解密:
5B E6 BB 1A 
90   96   62  D1 D3 1D B5  50  2B  87  5B  66   // QQ昵称 + QQ号码(网络字节顺序的数字形式)的一次MD5

注意:
这里的昵称为:
测试QQ号 (B2 E2 CA D4 
51   51  BA C5)
QQ号码为:
847708268
(B2 E2 CA D4 
51   51  BA C5  32   87   00  6C)的MD5就等于上面的解密内容。

该包会连续发送4次,不需要服务器返回响应包。

你可能感兴趣的:(登录)