admin管理员组

文章数量:1535555

2024年3月2日发(作者:)

手机QQ协议分析百度网盘

篇一:QQ协议分析三

QQ协议分析三

发送:

02

1A 35

00 E3

4A C2

10 73 a1 f6

02 00 00 00 01 01 01 00 00 64 00

00 38

00DD_Token3 :

C7 F7 24 5D B9 4F 7F D9 B9 B5 E1 18 92 49 AE 74 81 B0

0D 26 87 36 BC D5 7B A2 1D 87 D5 59 6B 9C CD BB A7 F7

F8 60 D2 69 DA 3B 38 12 1C A0 D9 B1 66 AB 2C A7 63 4F

72 41

密文:

80 B3 D8 48 A5 C8 0D C6 22 4A 25 A0 D1 3B 46 B1 4A 4B

4B 61 4F 35 C7 68 BD FD 5E 94 88 06 C4 68 44 C3 EA BA

CA 40 2F 5D F5 DB 2E 76 DB 5D DA 89 74 53 33 7E 75 40

93 15 2A 11 06 5D BB 5F B1 A2 6B CD 19 9D B6 BC 6F 1E

01 0A 5F 6C AC 5E B5 70 ED 48 7B F3 BD C7 56 79 29 83

7C 55 DD AC 13 D6 1E 17 71 95 C1 3D FA 01 AC 47 B4 03

B8 BE FE 6D 13 EE F8 5C F7 AD 39 7D B8 A7 71 F8 E8 B8

6D 4B 13 A6 38 C3 CD D5 81 BC 3C AC D1 9C 2C 91 17 BD

AF 5C FF 78 14 32 EC 0C 5C 21 56 05 8E 86 51 9E 75 0D

BB 1D 83 46 51 4D 65 B2 BE 22 0B 36 87 41 AC E8 7C 07

96 B6 FC 7A 68 F9 CB 33 B4 98 26 48 28 A1 53 79 69 19

E7 5C BE ED 1F E0 C2 F9 50 7C 63 3E D4 D7 83 B1 EF D0

B7 A2 F2 E5 A1 27 D1 8C 84 21 D2 3E 34 6C 36 D7 36 AA

1C B8 AC 5F 98 85

包尾: 03

解密:

00DD_Key1:4D 39 42 58 73 6A 52 54 4B 59 57 76 7A 52 66

55

固定:00 C0 00 01

1 :00 00 08 04 01 E0

2 :00 00 03 20 00 00 00 01 00 00 0A 5D

00 38

00BA_Token:

EB 8F F6 B1 2E F0 E0 8C 9A 03 0F D0 65 36 CC 44 5D F8

CC CF 3C 37 25 D1 E3 CE 78 F0 BA C3 37 52 14 19 A0 FC

EB 3B 4A A8 37 F2 0F 98 F8 CB 39 83 49 EA 6B F0 BE 12

7A 60

固定:00 70 00 01

登录时间:4B E2 CF 4E

长度:00 68

00E5_Token2:

5D A4 B3 65 D1 7F 5B 94 F8 9D 6D 0A 8E ED A4 C9 CC 81

3F DC 9C 63 A3 5D A9 45 D0 76 43 09 34 95 86 19 1C DE

DA 8C A6 B9 BC E9 EE 2A 56 8E C0 D6 23 5C E5 87 EE 95

10 A9 6D 24 DF 0F 09 4C 51 13 1C 07 57 A6 A0 BE E6 23

29 5F D8 E6 D6 43 38 14 D8 78 79 EF 70 29 AB B6 87 F5

9F 6F 2C 71 1E B0 F0 EF 68 A0 A4 C3 CE DC

固定:00 00

长度:00 20

数据:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

接收:

02

1A 35

00 E3

4A C2

10 73 a1 f6

00 00 00

密文:

DF B2 D0 D7 11 EF 6A 9D AC 74 E9 D3 0B 11 33 11 D9 16

14 17 8A 1A 1E 72 E2 EC 24 1A 3A C2 F8 85 7B 71 0F 9C

D3 3D 69 AB

包尾: 03

解密:

00E5_Key2:41 44 54 33 6E 67 38 34 38 4E 61 65 76 6E 6B

79

固定(QQ 号不同则不同):00 13 00 00 0E 02 4F

昵称长度:06

昵称(UTF-8 编码):71 77 65 71 77 65

结果码:01

固定:00 80 00 00 00 00 00 00

如果发生错误,那么需要用发送包中的加密密钥进行解密,解密结果主要是

00 56 33 00 00 02 23 00 00 00 00

错误信息长度:00 4B

错误信息:(UTF8 编码)

E6 8A B1 E6 AD 89 EF BC 8C E7 94 B1 E4 BA 8E E6 82 A8

E8 BE 83 E9 95 BF E6 97 B6 E9 97 B4 E6 B2 A1 E6 9C 89

E7 99 BB E5 BD 95 EF BC 8C E6 82 A8 E9 9C 80 E8 A6 81

E9 87 8D E6 96 B0 E8 BE 93 E5 85 A5 E5 AF 86 E7 A0 81

E3 80 82

( 抱歉,由于您较长时间没有登录,您需要重新输入密码。 )

固定:00 00

0x00A4

发送:

02

1A 35

00 A4

77 0C

10 73 a1 f6

02 00 00 00 01 01 01 00 00 64 00

00 38

00DD_Token3 :

C7 F7 24 5D B9 4F 7F D9 B9 B5 E1 18 92 49 AE 74 81 B0

0D 26 87 36 BC D5 7B A2 1D 87 D5 59 6B 9C CD BB A7 F7

F8 60 D2 69 DA 3B 38 12 1C A0 D9 B1 66 AB 2C A7 63 4F

72 41

密文:

82 E7 0C 7C 55 47 1B 67 98 05 07 2D 7B DB 50 4E 8F FD

EF 12 47 72 AA 0C 62 02 E3 EB F2 83 80 A5 C9 6D F5 FD

C8 82 17 66 9A 57 73 51 65 02 BB D0 DB EE C1 C1 1B 11

83 42 30 15 90 D0 8E 6E E0 12 A8 C3 47 78 9D A7 46 E5

88 15 A7 0B 8A F2 4B 21 91 7E E4 B6 26 69 F2 D6 29 2B

CC 5C EE F7 64 18 F1 72 61 0D B2 86 0D 3C 49 76 95 95

CD 48 D7 15

包尾: 03

解密:

00DD_Key1:4D 39 42 58 73 6A 52 54 4B 59 57 76 7A 52 66

55

固定:02 01 03

令牌长度:00 20

00DD_Token1:

15 46 65 1D 28 A7 C6 B1 A7 29 B8 82 FB 3E 8C D3 15 32

E6 4D B8 E5 BC D6 65 97 31 2E 5A BE 9C B2 固定:

3C 01 03 00 00

不知道(QQ 号不同则不同,同一QQ 号则相同):

FB 6C 28 17 B5 73 83 61 27 80 65 5A 3D 3B 17 6F A7 94

70 C5 83 C3 C0 07 D9 AA E2 20 A0 8F 44 9D CF FF 3D D9

1C 6C 23 15 1B C3 B5 91 60 79 6C D8 3F D3 C3 E3 0A B9

AB C2

接收:

02

1A 35

00 A4

77 0C

10 73 a1 f6

00 00 00

密文:

64 DE 6F 7B 19 59 6E 46 30 20 EA 34 E3 48 44 03 B9 96

79 C5 F2 FB 35 A7 EC CA 3B 57 1F BB 64 36

03

解密:

00DD_Key1:4D 39 42 58 73 6A 52 54 4B 59 57 76 7A 52 66

55

固定:

02 00 01 03

02 03 01 03 00

长度:10

00A4_Key (同一QQ 号则相同):B8 89 57 90 73 0C 94 47

85 5A 6B 13 D4 20 DE 52

如果发送的数据包中的红色部分改成56 个0 发送出去,则接受到的数据包解密之后,结果是 02 03 01 03 00

,从这个情况来看,是通过了的,需要测试0030 看能不能顺利得到sessionkey 。

(经过验证,红色部分全部填写成0,也能通过。)

0x0030

发送:

02

1A 35

00 30

23 9F

10 73 a1 f6

02 00 00 00 01 01 01 00 00 64 00

00 38

00DD_Token3 :

C7 F7 24 5D B9 4F 7F D9 B9 B5 E1 18 92 49 AE 74 81 B0

0D 26 87 36 BC D5 7B A2 1D 87 D5 59 6B 9C CD BB A7 F7

F8 60 D2 69 DA 3B 38 12 1C A0 D9 B1 66 AB 2C A7 63 4F

72 41

密文:

02 46 4F 3C F9 6C ED 12 0F 9B 6F 3C 73 A7 BE 66 BE 03

8B 94 7E 46 64 7C E2 E7 CD EA 74 AF 6C BB DA 21 22 F2

F8 C6 09 4C 1A EB 9C 93 6F 38 52 68 46 99 51 6C 42 8E

2D FB FF 00 ED 41 B3 B0 7E 0F F1 C8 C6 69 7A 86 DF BA

46 04 49 DF F0 65 5D 53 9F B5 11 C6 60 B0 1F BB A1 A8

80 58 A3 9F 8E 83 30 AE 70 54 E3 89 21 5C A3 10 BE 0B

23 C7 F4 5D 55 80 21 08 75 24 DE 89 ED 95 D9 B9 AE 25

7E 01 92 F9 E2 AF 93 E8 71 05 46 3E BD EA 75 95 84 15

73 BF 80 1C C9 94 3B 48 6B 74 77 54 79 1A A0 B3 A5 35

A6 6C 6A 4E 81 43 99 A3 B8 46 B5 12 C7 45 4B AA CD 40

DD E9 78 11 69 EB BD FB 31 0D 54 6A 61 37 BB 9D 86 8D

FC FF 85 85 BF 73 CC E3 FA 35 CA AA D1 72 9D 01 28 C3

50 D1 C6 CC DD A9 9F A0 AC F8 35 14 5B B9 63 2A 6E E6

16 51 39 D8 56 47 C6 A2 BE 0D DD 2F 55 16 60 4C 6F 30

28 2A 26 81 12 1E 18 55 B1 37 17 84 FA 2B F9 F8 8F 5A

8E 4A 97 A6 03 D7 D5 6B 95 D0 E7 7F 52 33 68 03 7C 2F

C6 FF 58 BB 23 48 DF DE 5A 55 B2 31 5B B9 A2 F8 A4 B8

8F 42 59 C3 CB B7 00 2A 3B E8 64 00 69 66 A6 20 C0 A6

27 23 21 CA D2 46 26 57 BB 07 53 72 56 32 48 FD 9D 43

FA 75 14 3E CD D5 84 F7 95 2C 9A 07 EE C4 A0 E1 88 4A

D3 54 5D CC F1 98 8C BF 64 A9 FB 75 B7 53 98 75 D4 06

A0 5C BF 65 1D 80 71 E2 FE 07 0B 76 8D 89 44 64 8C EB

F8 D3 E2 4B 79 95 BC 8C 2B BA 89 EB 92 33 1F 89 1D EF

26 AA 31 B0 0B C0 10 3E F3 31 82 55 85 69 41 BF C0 04

C7 48 DC AC 4C FB C2 09 C6 DD EE E9 82 61 25 AC E8 2D

E0 15 6A 3B C9 23 2B F0 78 3A D4 A9 44 24 0C B7 F1 68

3A 7A AE 65 F7 5C E0 B4 11 1A 82 6C 87 4F 4E 48 93 E9

46 6D BA ED 5B 00 0F 3F 19 67 9C 96 B2 E7 5B 53 54 67

06 6E F3 5F 2F 48 36 61 DA CC A3 43 9F CD 12 46 AD 2C

71 03 B5 5A 37 AB 2F B5 72 F9 F4 C4 C7 7E C7 48 DF AF

E1 F2 8F 88 20 3B 6E 6E 5B B9 57 5D AD C3 BD 96 A9 A7

39 B4 ED 0C 39 81 A3 94 9D 6F C0 A2 75 9D 6F 50 58 E7

4F 73 17 8D EA 26 42 03 EC CA 36 66 24 59 24 38 57 48

EA D0 B8 DE E0 51 36 D2 52 F1 04 B6 67 4F 49 E9 CB 10

32 72 E4 7B C0 7A 33 FE AF E8 7C C4 F6 01 EA E6 A4 25

B1 EE 67 B0 46 33 29 94 54 5A E4 74 0B 73 05 15 DD 3D

C8 7F 29 57 8D 43 1B E9 A3 71 EE E0 67 C4 3B EC F9 0B

48 6A 62 69 DE 0E 69 35 0D EE 25 A1 63 B2 D1 5C 48 56

F1 93 10 4A 6D F1 94 FC 47 77 10 35 A4 E4 5B AE 4C 38

0E B2 48 21 FD 02 A6 04 61 C8 AA 50 68 4C 82 40 85 F9

79 45 D4 2C 92 3D 16 0E 75 D1 79 37 95 19 CE 41 E5 37

38 7E 8C 89 21 0B

包尾: 03

解密:( 728 长度)

00DD_Key1:4D 39 42 58 73 6A 52 54 4B 59 57 76 7A 52 66

55

固定:00 01

2 :00 00 03 20 00 00 00 01 00 00 0A 5D

固定(00E5 中接收):00 DC 00 03

登录时间(0091 中接收):4B E2 CF 4E

IP 地址(0091 中接收):7B 91 B5 20

固定:00 00 00 00 00 00 00 00

篇二:QQ协议分析及还原

QQ协议分析及还原

最初,QQ通信协议并没有加密,而是直接采取明文的方式进行传输,到了后来才使用了加密传输,加密算法一直没有变过,使用的是blowfish算法,但是密钥的交换协议变得比较频繁。其实TX也是被逼的,现在的互联网用户比前几年更加注重隐私安全,这么大用户量的通信软件,如果用户与对方之间的聊天信息可以轻易的被第三方破译获取,那么用户量肯定会离开她,而去选择那些能够更加保护好个人隐私的人通信软件。因此,随着时间的推移和技术的发展,以前设计的协议可能会被研发者发现一些弱点,“图谋不轨”者加以利用,会对TX造成一些潜在的风险,他不得不对协议进行修改(QQ2011

正式版中的密钥交换中对密码的MD5计算就加入了salt的概念,这个salt就是对应的QQ号码,后面会有详细的描叙)。

QQ协议首选的传输层是UDP,如果UDP不可登陆,那么会再尝试使用TCP进行传输。UDP使用的端口是8000,TCP使用的端口是443,应用协议基本一样,只是在通过TCP进行传输时,前两个字节为协议内容的长度(包括2个字节)。

QQ协议中每个通信内容都带有一个协议头部,如下图:

其中标识1一个字节,版本号、命令字和序号都是2个字节,QQ号码有4个字节,接下来是数据部分(已加密),最后是一个尾部标识1个字节。

在进行协议还原的时候,最关心的就是协议头部的命令字,需要根据不同的命令字,来进行相应的处理,最终获取密钥解密聊天内容。

QQ登陆协议密钥交换过程,首先我们使用Wireshark抓报文分析,观察主要用到的命令字(见上一篇Header部分的介绍)。

1、Touch Information(0×0091)

这个报文无需关心,是客户端向服务器在SAY HELLO…

2、Login Request(0x00ba)

未知,在此处并不重要。

3、Login Verify(0x00dd)

非常重要!!获取会话密钥首先得解密该报文。但是要解密该报文,必须得知道该登陆QQ用户的密码,而用户密码只有用户和TX知道,第三方是不知道的(也有可能存在“不可思

议”的第三方…)。数据传输过程中使用的加密算法是blowfish,这个算法目前从公开的资料上来说,还没有发现漏洞。因此,要实时获取用户的聊天信息,除非已经知道密码了,或者已经暴力破解了密码(这里简单介绍一下怎么进行暴力破解,这里的暴力破解,当然不是模拟一个QQ客户端不停的向TX服务器发送登陆请求,这样太慢了,而且TX那边也会有记录。首先,得分析出这个报文的密钥生成算法[不是简单的直接使用密码作为密钥],加密算法(这个已知,是blowfish),第二,需要将对方的登陆报文截取保存到文件,然后写一个程序,不停拼接字符串、数字、标点符号进行组合,根据第一步分析它密钥的生成方法生成出密钥,然后作为blowfish算法的密钥,去解密报文,如果解密成功,恭喜你,你暴力破解到了一个QQ密码。但是这种概率比较小,即使有一些,这些号码的价值不大,扯远了…)。

LoginVerify报文的解密密钥生成方法,在QQ2011版本之前,是MD5(MD5(PWD)),对QQ的密码做了两次MD5运算。但是QQ2011版本(包括2011版本)之后,这个算法做了一点修改,就是:MD5(MD5(PWD+QQ_NUM)),这个修改其实是非常有必要的,为什么呢?因为随着硬件技术的发展,以及前些年MD5彩虹表的推出,简单密码的MD5值非常容易就能从彩虹表中找出对应MD5值,从而得到原始字符串密码,即使TX做了两次的MD5运算。在彩虹表的推出或以前(因为我也不知道是在这以前还是以后,呵呵),在执行MD5运算时,就有了加SALT的说法,很形象!加盐,在这里,QQ_NUM就是盐,这样就加大了使用彩虹表破解的难度。

使用密码根据以上的算法得出解密密钥,解密Login Verify报文后,会得到一个新的密钥,这个密钥暂且就叫做verify_key。

Login Verify Reply(0x00dd)

服务器对客户端Login Verify报文的响应,这个报文需要verify_key作为密钥进行解密,得出一个新的密钥-verify_reply_key。

4、Login get information(0x00e5)

客户端接收到服务器的Login Verify Reply报文后,会使用verify_reply_key加密数据发送到服务器,而这里面又包含了一个key – get_info_key。

5、Login verify E3(0x00e3)

未知,此处可以不进行处理。

6、Login send Information(0×0030)

使用get_info_key解密该报文,得到会话KEY – session

key。

回想一下:密码是关键,有了密码才能解密Login

Verify(0x00dd)报文,解密了Login Verify(0x00dd),才能解密后续的的报文。其步骤是:passwd -> verify_key ->

verify_reply_key -> get_info_key -> session_key。

前面两篇简单的介绍了QQ登陆协议密钥交换过程以及所使用的加密算法,知道了这两点,就可以对它的协议进行还原了。

QQDecrypt,通过winpcap抓包,实时对QQ聊天协议进行还原。

除了聊天协议之外,我们还可以对QQ相关的协议进行还原,包括但不限于:

1、QQ文件传输

2、QQ音频传输

3、QQ视频传输

4、QQ密码验证程序

5、QQ密码获取,是的,你没有看错,有一种主动的方法(用户登录时)就可以获得QQ的密码。在网络出口获取,而不是在客户端进行HOOK的方式获取。

篇三:QQ2010协议分析(登录篇)

QQ2010协议分析(登录篇)

七月份的时候突然对QQ协议产生了些兴趣,于是这几个月有空就研究研究QQ协议,目前对QQ2010的协议已经分析得差不多了。现在跟大家分享一下我的成果。

QQ登录分为UDP和TCP登录,还支持代理登录。默认是UDP登录。UDP登录端口服务器为8000,本地端口一般是从4000开始选择,如果该端口已经被占用,则加1再测试,一直测试到一个没有被占用的端口。

TCP登录服务器一般是80或者443端口,本地端口选择方式和UDP一样。

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

1.0x0091 Touch包

该数据包是QQ客户端登录时发送的第一个包,它的作用在于测试远程服务器是否能够正常响应,根据我们的抓包分析,对

于不同的QQ号码段,提供服务的QQ服务器是不相同的,对于QQ会员有专门的QQ会员服务器。在对QQ客户端的回应包中,如果连接的服务器不对该QQ号码提供服务,它会返回另外一个服务器地址,让客户端重新连接该地址。0x0091发送包:

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号码: 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 //01(在后面的命令里面要用到的) 00

00 03 20 00 00 00 01 00 00 0B BF //02(在后面的命令里面要用到的) 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 //首次发送为15字节0 03 //包尾 ]

0x0091接收包:

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号码:

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的介绍和下载请看这篇博客:

//archive/2010/10/09/。

0x00BA发送包

0x00BA接收包

3 0x00DD密码验证

本文标签: 协议登录密钥