您的位置:首页 > 其它

PCQQ UDP协议的研究<6>——0828 发送包

2015-07-27 14:20 393 查看
    上一篇“PCQQ UDP协议的研究<5>——0826
接收包 ”分析了0826接收包,分析的有点匆忙,若是还对那个包有疑问,欢迎在原帖后跟帖。
   0828可是比较关键的包了,因为通过这一步,就能拿到QQ的会话密钥(sessionkey)。会话密钥能做什么用呢?当然是解开后面大部分包的一个通用钥匙,作用自然不可小觑。能走到这一步不容易啊!
    下面我们把0828的发送包数据搬上来:

[NO.5 2013-09-13 15:23:33 207 SEND 677字节]

02 34 27 08 28 6F 0E 17 AC C4 B7 02 00 00 00 01

01 01 00 00 66 7E 00 30 00 3A 00 38 EB 7E 2E 5D

72 C3 8D 84 7F 1D BD 51 36 4E D0 A4 8F CB C1 11

2F 4F CB 79 B3 50 8B CD E9 74 BE 73 FD FD F4 FC

95 4B 42 5D 0C 1A A7 3E 0C 7C 80 A9 4F F6 B9 08

91 30 A5 85 98 C4 8C 98 A2 E6 CA 06 E0 86 27 FE

66 7E F1 32 54 1A A0 5E FF FB D0 D6 66 93 7D B8

C4 F8 A3 7F F1 37 2B 9A 57 1B B6 6C 3B 8D F0 1B

C1 F8 6C 79 50 5C 2F F7 9F 42 E4 90 B2 D5 D9 B5

B3 24 4C B5 F5 FC 70 C5 16 44 58 F3 3F A6 9D C4

48 89 34 86 25 CD 79 D6 E7 45 CA 59 98 77 12 BF

0C 88 1A F1 58 CE 5C C5 C3 88 1B BA B2 0D A5 91

CF CA C2 A8 11 EE 3C 9E C5 C0 8A AD F4 D2 77 E1

45 03 16 AE 80 80 D9 6F 16 F6 02 59 C9 FE 02 55

F7 78 B6 F6 70 63 A9 35 5B CA 07 11 7C CD 2A 28

CD 79 43 3D BF FD 7D 06 D6 7F CA A5 43 F4 A8 3C

28 35 57 5C B9 B0 53 5E 56 E0 B3 32 88 6B C0 39

D6 24 7F 2D 82 AF 06 0B 48 27 57 03 0A 6A 3F 98

7B 5B EE 97 32 9D FB EB 16 AA 95 B4 7D F1 F2 11

44 1A C3 97 EC 02 03 0A F3 37 7C EC 3F 37 37 A9

BD 0F 90 6D 6B 66 61 B4 54 3C D1 29 02 95 4F 6A

02 56 3E 64 43 EE D2 CD C6 29 3B 21 B9 96 FB DF

05 C5 87 8A FC C4 5C 98 82 E6 A1 E0 93 66 9B DE

C2 71 A8 07 4D D4 02 5C B9 74 A8 D8 F0 DC AB A4

59 26 2E E5 FE CD EF 03 A6 3B 23 B3 30 24 A7 9B

32 3D AD B1 85 3E EF 41 CC E5 C7 77 E3 95 F0 ED

63 ED 10 AB E4 3F D2 10 DF 04 2B 5D 06 B1 C1 53

AB D5 BF 91 1E 1D 25 F9 2E EF 65 C7 FC 12 54 73

9D 90 C7 6A 20 97 DA 6A 8E 5A 58 72 D6 D7 57 0A

49 3C D4 6F 73 9E BF 74 5C CD 15 45 39 7A 5E 11

72 A0 C9 10 06 24 0F 02 6A CB 92 EA 85 D9 4E 0A

F4 5D 8D F0 F6 6D 8E 6F 57 99 3F 28 19 70 48 B0

66 F5 F5 AF 8E 28 DF F2 09 D1 65 A9 14 2E 6E 1F

43 46 47 38 B3 30 9E D4 74 C1 28 2F 58 93 87 61

95 3D AB DC 67 0E B9 58 E2 72 74 EE D4 C7 3D 06

25 6B 6F 06 16 C3 6E DC AC FE 76 FB 15 4C 61 5E

05 8D BD 6E 33 0A D4 4C 29 BD 84 75 4F 07 1D A0

70 9D A7 33 77 AD B9 76 AB C6 9C C4 EE 3A 30 D9

8C 42 C6 E5 1B 23 09 AA 70 9E DD 24 AD 7E CE D0

97 88 E4 E1 FC 7D 2F AB 69 EF 80 58 CF 3C D4 1C

69 E0 3E BD 62 9B 63 FD 36 76 00 7F 8A 5C A0 58

F3 90 4E D4 0C 33 E0 AC B3 51 2D 6E 2E 53 47 90

25 7A 7F F0 03

这个包除了比较关键,还比较特殊,为什么呢?大家看他的头部和前两个发送包的头部有一点不一样吧?我们来对比一下与0826的发送包头部的差别。

02 34 27 08 26 7D E0 17 AC C4 B7 03 00 00 00 01

01 01 00 00 66 7E 00 00 00 00  //0826的发送包

02 34 27 08 28 6F 0E 17 AC C4 B7 02 00 00 00 01

01 01 00 00 66 7E 00 30 00 3A //0828发送包

仔细对比一下差别,这里是千万要注意的,我们0828的头部不一样。
     接下来,继续看下面的数据,发现有一个00 38开头的数据。这不是一般令牌的字节长度标识吗?怎么会在这出现呢?难道后面接着的就是一个令牌?没错,细心的童鞋可能已经发现,这个00 38的令牌恰好是我们在0826的接收包里出现过的令牌。巧合?+必然!
    再接下来,就是完全没有规律的数据了,这下该是加密了的数据了吧!我们用哪个密钥来解密呢?
   0826的接收包里出现过好几个密钥(长度为16个字节嘛)。我们先用第一个16个字节的“密钥”来解一下密:

46 70 36 54 79 6A 70 68 63 4B 63 67 7A 33 4B 46

啊呀,不得了,一不小心被解开了:

[

00 07 00 88 00 04 52 32 BD 85 2A 30 40 5F 00 00

00 00 00 78 CB 96 C2 05 20 D4 AC 6A DD 42 81 1A

D0 A3 CB CC 74 0B 48 E3 CC CC 10 31 0A 22 31 70

72 23 29 00 68 A8 B8 62 F7 A0 2F E1 B2 A5 A0 4A

B4 FF 9A 67 C4 AD 62 FC C3 F9 6A 08 37 8E 7F 6D

7D 4A 42 BA AF 91 DB D9 C9 87 69 34 AF 2E B6 7C

1E A8 5A 44 F8 0B 14 F3 6E 8A 54 9C 5D 97 96 E0

6B 7A 81 75 CE 40 04 BB 83 C3 3D F3 37 75 A4 A0

3C A3 13 AF 55 BF EA D8 43 04 75 E3 00 0C 00 16

00 02 00 00 00 00 00 00 00 00 00 00 70 5F F2 74

1F 40 00 00 00 00 00 15 00 30 00 01 01 3E 29 AA

EE 00 10 EA F8 F4 9C 00 8B 3A C2 55 F7 78 D5 E7

C5 20 63 02 56 73 44 C4 00 10 AD D9 9C D2 8B 81

57 4C 35 EC 74 A8 B7 57 0C 9A 00 36 00 12 00 02

00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00

00 18 00 16 00 01 00 00 04 33 00 00 00 01 00 00

14 77 17 AC C4 B7 00 00 00 00 00 1F 00 22 00 01

2A F3 14 58 E3 94 F2 74 8F EB F4 86 8C 62 18 66

E1 B9 5B 26 2A 05 97 17 92 71 44 2C 7E B5 73 29

01 05 00 CA 00 01 01 03 00 40 02 01 03 3C 01 03

00 00 81 8B 8A CC 7A 5E 75 FC 4A E7 5A A0 04 AB

0B B9 BA 19 6C AD 08 08 0B 0D 34 08 A4 C9 27 E9

AB BC 80 0D 38 97 4B 7F A9 34 99 0B FD C1 14 B4

97 6A C9 DD 53 23 F1 C3 0D 45 00 40 02 01 03 3C

01 03 00 00 81 8B 8A CC 7A 5E 75 FC 4A E7 5A A0

04 AB 0B B9 BA 19 6C AD 08 08 0B 0D 34 08 A4 C9

27 E9 AB BC 80 0D 38 97 4B 7F A9 34 99 0B FD C1

14 B4 97 6A C9 DD 53 23 F1 C3 0D 45 00 40 02 02

03 3C 01 03 00 00 07 EA 88 15 38 C8 52 F3 0E 00

0F 61 A5 12 DE 2E B8 DE D2 7A FA 46 32 11 21 76

6C DF 11 96 D7 BB F9 A9 46 41 52 B8 1D 01 22 C0

AA 18 39 98 93 21 FE 4D 8B 1A 16 C8 31 1D 01 0B

00 38 00 01 F3 12 1C DC 05 2B 61 49 03 F9 7A 86

AC 5F 5F 3D D1 10 00 00 00 00 00 00 00 02 00 18

E1 17 B8 35 88 12 85 44 64 49 EC 16 89 D6 EF 78

52 5D 44 77 B4 6D C7 96 00 00 00 2D 00 06 00 01

C0 A8 01 65

]

解开后还是稍不了多次对比。最后分析如下:


本帖隐藏的内容

[

00 07 00 88 00 04 

52 32 BD 85 [ 时间:2013/9/13 15:23:49] 

2A 30 40 5F[ IP地址:42.48.64.95]

00 00 00 00 

00 78 //从0826接收包里获取得到的令牌

CB 96 C2 05 20 D4 AC 6A DD 42 81 1A D0 A3 CB CC

74 0B 48 E3 CC CC 10 31 0A 22 31 70 72 23 29 00

68 A8 B8 62 F7 A0 2F E1 B2 A5 A0 4A B4 FF 9A 67

C4 AD 62 FC C3 F9 6A 08 37 8E 7F 6D 7D 4A 42 BA

AF 91 DB D9 C9 87 69 34 AF 2E B6 7C 1E A8 5A 44

F8 0B 14 F3 6E 8A 54 9C 5D 97 96 E0 6B 7A 81 75

CE 40 04 BB 83 C3 3D F3 37 75 A4 A0 3C A3 13 AF

55 BF EA D8 43 04 75 E3 

00 0C 00 16 00 02 00 00 00 00 00 00 00 00 00 00 //固定

70 5F F2 74 [ 服务器IP地址:112.95.242.116]

1F 40 //服务器端口:8000

00 00 00 00 00 15 00 30 00 01 //固定,标志着0x30个CRC数据的字节开始

01 //CRC的序号

3E 29 AA EE //反着的数据,自己慢慢体会。CRC_Code0

00 10 //16个字节,CRC_DATA0

EA F8 F4 9C 00 8B 3A C2 55 F7 78 D5 E7 C5 20 63

02 //CRC序号

56 73 44 C4 //CRC_code1

00 10 //16个字节,CRC_DATA1

AD D9 9C D2 8B 81 57 4C 35 EC 74 A8 B7 57 0C 9A

00 36 00 12 00 02 00 01 00 00 00 //固定

01 00 00 00 00 00 00 00 00 00 00 //固定11个字节,有验证码的时候第一位是13!

00 18 00 16 00 01 //0825_fix0

00 00 04 33 00 00 00 01 00 00 14 77//0825_fix1

17 AC C4 B7 [QQ号码:397198519] 

00 00 00 00 00 1F 00 22 00 01//固定

2A F3 14 58 E3 94 F2 74 8F EB F4 86 8C 62 18 66

E1 B9 5B 26 2A 05 97 17 92 71 44 2C 7E B5 73 29//32机器码

01 05 //固定2个字节

00 CA //接下来总共有202个字节

00 01 01 

03 //标志下面需要3个数据块,这里发现前两个是重复的,有木有?

00 40 

02 01 03 3C 01 03 00 00 //从01开始,往后的数据序号依次递增

81 8B 8A CC 7A 5E 75 FC 4A E7 5A A0 04 AB 0B B9

BA 19 6C AD 08 08 0B 0D 34 08 A4 C9 27 E9 AB BC

80 0D 38 97 4B 7F A9 34 99 0B FD C1 14 B4 97 6A

C9 DD 53 23 F1 C3 0D 45

00 40 

02 01 03 3C 01 03 00 00 //解释同上

81 8B 8A CC 7A 5E 75 FC 4A E7 5A A0 04 AB 0B B9

BA 19 6C AD 08 08 0B 0D 34 08 A4 C9 27 E9 AB BC

80 0D 38 97 4B 7F A9 34 99 0B FD C1 14 B4 97 6A

C9 DD 53 23 F1 C3 0D 45

00 40 //

02 02 03 3C 01 03 00 00 //解释同上

07 EA 88 15 38 C8 52 F3 0E 00 0F 61 A5 12 DE 2E

B8 DE D2 7A FA 46 32 11 21 76 6C DF 11 96 D7 BB

F9 A9 46 41 52 B8 1D 01 22 C0 AA 18 39 98 93 21

FE 4D 8B 1A 16 C8 31 1D

01 0B 00 38 00 01 //固定

F3 12 1C DC 05 2B 61 49 03 F9 7A 86 AC 5F 5F 3D//

D1 //登录标志

10 00 00 00 00 00 00 00 02 //9个字节固定

00 18 //如果前面的发送包错误的话,这里的令牌是取不到的

E1 17 B8 35 88 12 85 44 64 49 EC 16 89 D6 EF 78

52 5D 44 77 B4 6D C7 96 

00 00 00 2D 00 06 00 01 //固定,每个版本不一样

C0 A8 01 65 [ 本地连接的IP地址:192.168.1.101]

]

好了,0828的发送包都讲完了,革命快要成功了,加油!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: