QQ2013 协议分析

2024-03-02 17:38
文章标签 分析 协议 qq2013

本文主要是介绍QQ2013 协议分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(本文为转载文章,任何人转载请注明出处:http://blog.csdn.net/xieqb/article/details/8811148)


在目前的版本中,其主要分析0825 0826数据包。

先来2个数据包

NO1:

02 32 41 08 25 25 B7 0F 10 A5 38 03 00 00 00 01
01 01 00 00 66 28 00 00 00 00 A8 89 BC 90 FA 7C
6A 32 55 EB D8 F4 2B 52 25 C8 C4 69 C1 09 4F A8
6A BE 0C E3 05 74 F5 65 F4 10 3A 0A 86 EB E2 CD
91 E9 1A 0A DA 71 B6 7F DB 47 61 8D 32 84 8A BC
5B 4D A5 EE 38 C2 AA E0 18 CF C0 40 6A 6E EB E4
29 DD 11 2E 98 DA 26 B2 AE 60 39 08 22 76 87 AA
DC B2 03

对包进行拆分分析:

02开始,03结束,多年不变。

32 41 所使用qq版本号

08 25 此包中qq数据的命令类型

25 B7 此包的序号

0F 10 A5 38 QQ号码

03 00 00 00 01 01 01 00 00 66 28 00 00 00 00 随机值

A8 89 BC 90 FA 7C 6A 32 55 EB D8 F4 2B 52 25 C8 随机的tea key 这个key主要是用来解密下面一段数据,即剩下的数据部分

解密后为:

00 18 00 16 00 01 00 00 04 17 00 00 00 01 00 00
13 C9 0F 10 A5 38 00 00 00 00 01 14 00 1D 01 02
00 19 03 09 8E F4 8D 8F 71 EA F1 5E EF A2 26 44
92 FB 12 49 7E 3E FB AA 62 3C 04

各字段分析:

00 18 00 16 00 01 固定6个字节

00 00 04 17 00 00 00 01 00 00 13 C9  12字节

0F 10 A5 38  QQ号码

00 00 00 00 01 14 00 1D 01 02 10个固定

00 19 后面数据的长度为25(19为16+9)

03 09 8E F4 8D 8F 71 EA F1 5E EF A2 26 44
92 FB 12 49 7E 3E FB AA 62 3C 04

第一个包至此结束

.....................................................................................................................................................................................................................

第二个:(s->c)

02 
32 41 
08 25 
25 B7 
0F 10 A5 38 以上同第一个包

00 00 00 固定

剩下的数据全是加密之后的,解密的密钥是第一个包中的那个随机密钥

7B 59
7B E9 18 31 10 F0 84 A5 CD 3B 90 72 74 C6 7A 64
E2 60 17 16 5D 61 B9 8D 74 C4 83 F5 2A 27 60 B9
77 AE AA DF 2D 74 31 54 05 9E 8F 3D 13 7B BB BB
0D F4 BB 95 17 E6 DB C9 13 05 CD 41 37 9D DB 57
9F C7 04 A1 01 72 D7 25 AE 81 A0 63 17 A0 11 6B
9F D6 E7 43 B9 63 59 3C 4A 40 B7 D2 47 EA

解密之后为:(密钥:A8 89 BC 90 FA 7C 6A 32 55 EB D8 F4 2B 52 25 C8)

00 01 12 00 38 6A 24 17 76 A8 5D 4A A2 8F 54 1C
B3 C6 17 B9 14 7D A7 93 86 6A D7 5A 7D 45 63 1C
F7 7D 20 C6 03 1E B1 B1 46 A9 3E DD 31 63 5B DA
4B DA 83 05 AA 6C 88 60 60 38 DF 43 75 00 17 00
0E 00 01 51 6D 31 0D 3B AE 2C 91 04 2C 00 00

分析:

00 成功标志 

01 12 
00 38 长度 56字节
6A 24 17 76 A8 5D 4A A2 8F 54 1C
B3 C6 17 B9 14 7D A7 93 86 6A D7 5A 7D 45 63 1C
F7 7D 20 C6 03 1E B1 B1 46 A9 3E DD 31 63 5B DA
4B DA 83 05 AA 6C 88 60 60 38 DF 43 75 
00 17 00 0E 00 01 
51 6D 31 0D 时间
3B AE 2C 91  IP
04 2C 00 00

............................................................................................................................

No3:0826

02 
32 41 
08 26 
7C 18 
0F 10 A5 38 
03 00 00 00 01 01 01 00 00 66 28 00 00 00 00 随机值和第一个包的一样
E1 ED 12 FD 9D 48 96 ED 90 62 AD B6 54 FD 65 36 密钥 解密下面的数据
53 02 37 5F B8 B3
EE AD B5 D4 43 9D 4C F0 EE 44 07 A9 50 76 2D 52
B0 F1 D6 92 EF A0 27 C6 23 24 F7 34 74 84 95 4C
B6 3E 92 4D 99 5F 71 9E 37 21 63 FE FE 59 53 3E
01 25 03 32 CB 57 26 57 43 5D 12 7A 2B FE B7 B8
8A 17 32 65 E3 BC 5B AA 25 DE F4 FC 26 93 A6 F6
34 AC D5 A6 22 27 53 95 11 1A D6 61 03 96 5F D5
6A 35 BF 27 0A 1E B4 05 F7 E5 49 41 5E 12 8E 1C
6A 0B 85 9E 03 67 FE 59 C4 85 9C DC 2C A6 5D 23
DE FB 70 F9 9E C2 63 A4 D4 3B E6 E5 F8 91 65 3F
84 75 36 45 58 D3 DE 36 16 9A ED 70 49 FE 2F 68
C6 CF BE 21 78 99 56 C8 66 D4 AD B6 B2 6C 1E 41
CC 84 E4 5F 56 3A 03 C4 E5 86 FF 2C 8E B9 97 56
35 3B 9D 54 37 09 9C CF 4B 46 A0 00 9A 21 5B 87
72 B7 0C 14 2A 83 3B 37 FE 19 1C 23 8B 88 72 17
13 24 F6 AF CE EF 5C 13 54 B6 D5 FB A5 46 B5 72
19 A9 32 59 49 81 4F 6A E5 B5 35 77 61 43 1F 5E
D4 BE 65 05 F9 D8 B2 C1 62 63 32 ED 78 36 DB 7E
FD 71 DC 70 E5 37 42 F3 D9 30 62 27 A3 FF 2A D1
EE 0C B7 B2 F3 D4 F1 E3 C4 AC D0 27 77 45 DA 1A
9C 22 B8 D9 51 E0 FD C8 76 EF 5C CF 0B 76 BD 7F
EF 7B 1D 4A C6 8F CA 05 B0 2F FB 4F 65 13 27 87
7B A2 FF DC 08 EC 51 D7 DC EF 09 2E 20 FD 41 07
70 EE 2B 5B A8 08 04 2E 45 94 54 BE 97 74 0B B6
90 56 39 6F B4 7B 86 2B 5E 25 5E 9F A5 A9 D9 8A
32 2B 7E 32 A2 3B 91 36 15 B2 43 3A E9 06 69 A0
0A C5 C0 0A 0A 43 F4 4C DB 09 2A 4A B4 4A C2 DE
51 A7 A9 B1 8C 92 6D EE 21 11 7F 77 89 22 AC 6D
C4 56 36 D1 7B 5B 94 25 69 07 31 29 AF AD 81 E7
69 AE 28 80 C9 3D D0 D8 14 97 3F 96 F5 F3 A2 36
6D 6A 94 93 2E 43 F3 E1 EF 79 53 FC F8 18 2B 6B
24 FE 5C CA 69 93 5D D8 A5 C7 85 FE 52 24 92 B9
B8 C5 11 1A 08 DE CD 9B 08 98 26 03 07 10 5F 4A
F1 1B 03

解密之后的数据为:

01 12 
00 38 长度
6A 24 17 76 A8 5D 4A A2 8F 54 1C B3
C6 17 B9 14 7D A7 93 86 6A D7 5A 7D 45 63 1C F7
7D 20 C6 03 1E B1 B1 46 A9 3E DD 31 63 5B DA 4B
DA 83 05 AA 6C 88 60 60 38 DF 43 75 和第二个包的一模一样
00 05 00 06 00 02 
0F 10 A5 38 qq号码
00 06 
00 78 长度120字节以下120字节是加密的数据,需要进一步解密
3B 70 03 15 7B 2E
E3 74 79 32 CC BB B4 B4 90 A9 EE A2 06 36 67 6B
32 E3 88 2F 00 47 B5 7D CC 23 AD 9D 5E 5A DE 2C
0C FB 31 75 86 2D 02 6B E4 44 D2 CC F3 A4 C1 42
DD 62 BD 40 EC B5 5B E3 EC 8A 5B 03 C5 C1 AC 62
E8 80 06 9E FB 68 F8 66 EC C6 F5 D8 02 DD 19 D1
0F 79 FD 5E 65 11 DA 95 93 B7 94 6E 61 EB 61 80
33 D3 EB 40 75 A2 D5 CC D7 B6 18 DC EB 50 C9 58
16 65 

以上120字节的解密密钥为md5(md5(密码)+\x00\x00\x00\x00+qq号码的4字节)(本群群就是0F 10 A5 38),此密钥不能通过在线的方式算出来,需自己编程,

其中的\x00 表示一个字符串的结束,不是数字00,同时进行第二次md5时,第一次md5的结果是16个2进制,并非32个字符,一定需区分开。

此120自己解密后的数据为

D2 7C 83 8F 00 01 0F 10 A5 38 00 00 04 17 00 00
00 01 00 00 13 C9 00 00 00 95 CE D8 2C 47 6A E2
3D B2 2D 52 B9 DB D4 C8 8B 51 6D 31 0D 00 00 00
00 00 00 00 00 00 00 00 00 00 3B AE 2C 91 00 00
00 00 00 00 00 00 00 10 F0 F0 F0 F0 F0 F0 F0 F0
F0 F0 F0 F0 F0 F0 F0 F0 25 2B 8F F4 26 02 4E AE
B7 40 FB 01 BE 65 31 68

120字节解密之后的数据

00 18 00 16 00 01 00 
00 04 17 00 00 00 01 00 00 13 C9 
0F 10 A5 38 
00 00 00 00 01 03 00 14 00 01
00 10 
F4 62 29 09 AC A8 AE 05 46 56 70 CF 59 B0 42 05
 
00 32 00 37 3E 00 37 01 03 01 03 00
00 04 00 52 7E 00 00 00 00 00 BC A9 C1 00 9E EC
E8 2B 9F 7D 63 4C AB AB 4E 65 CA D6 C8 F1 67 DD
17 EB 99 E7 A4 2D CD DB 49 70 C1 96 44 9A 68 01
14 00 1D 01 02 00 19 03 09 8E F4 8D 8F 71 EA F1
5E EF A2 26 44 92 FB 12 49 7E 3E FB AA 62 3C 04
01 02 00 62 00 01 AB C8 50 49 1E 14 C1 3D B4 3B
D1 BF 59 09 6D 17 00 38 06 27 EA 5D 3F 92 A1 8F
E1 4B DD E1 1A 51 F8 54 B9 CC C0 8A A8 8B 1F D9
B6 B0 FC 9E 9A AA 5C D4 35 64 CD E5 18 BC 04 BF
46 37 C5 2B 3B F3 03 5A 2D DD 49 C1 91 23 58 28
00 14 6E 7F C3 DE A6 AF 87 AB 3E F5 D1 67 5B 54
34 84 8E D1 50 AF 00 1A 00 40 
7C 0D 5B FB 46 3E A3 3F DB C0 8D C7 4A BD B2 25 
4B 76 03 9C C5 DB AE F9 B3 26 D7 84 BD 60 93 DF 
F2 D7 6B E8 14 38 3D 57 95 44 0F A6 DB FF FA A8 
31 58 53 6D FE CD 75 BF F1 DB 1A 34 29 5B B0 D0

这篇关于QQ2013 协议分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/766924

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用