qq协议 0825 和 0836 udp 登录包解析
参考
0825包参考: https://www.cnblogs.com/mRRRR/p/5288931.html 虽然是2016年的, 但是里面的结构大体还是不变
参考: https://github.com/fa-ge/PCQQ-Protocol PCQQ协议的实现, 这里面基本都写清楚了, 但是能不能用我还没试过, 最后更新时间为2018年
TEA参考: https://github.com/ColasDAD/Py3QQTEA/blob/master/QQTEA.py 用来解密QQ的TEA加密
QQ版本号参考: https://bbs.kafan.cn/thread-1295613-1-1.html
使用工具:
- Python, 用来解密TEA, 方便的生成Hex和md5
- 网页的dev console, 有的时候可能用来做一些杂活, 比如统计hex长度以及replaceAll
- Wireshark, 网卡抓包, 用来抓qq的udp登录包
概念解释
qq协议中的udp包通常从02 这个字节开始, 03 这个字节结束, 然后后面紧跟着版本号然后就是命令, 本文以命令的2个字节作为这个包的名称, 比如:0825包的前面就是 023a570825. 下面的协议报文中的.. 省略号只是为了对齐, 别一起复制进去解密了
udp报文解析
0825 udp 发送包
0825发送包(本机发送)
报文原始数据:
ec4118251291c85acf44cc810800450000bf9143000040110000c0a81f2478e81418f57b1f4000ab6d89023a5708251115731717b40300000001010100006a4b00000000b899860003144579b8da863c1beed200abf0db243954f2e40089ac685f96cf905858602e7c87068d0f3c0cb7b33b17730f79ecd4d22ffdb42b98bb1c261aa2d7055a8a41def93ade17f969335848b41b8a2e671174a6487d81259c1f0b297501b8e542f04bbcc26acb7b5608d966a76ca0e0ca80648b0eee5f28bed43bd07ea12c2342bf092bd92703
hex视图:
0000 ec 41 18 25 12 91 c8 5a cf 44 cc 81 08 00 45 00
0010 00 bf 91 43 00 00 40 11 00 00 c0 a8 1f 24 78 e8
0020 14 18 f5 7b 1f 40 00 ab 6d 89 02 3a 57 08 25 11
0030 15 73 17 17 b4 03 00 00 00 01 01 01 00 00 6a 4b
0040 00 00 00 00 b8 99 86 00 03 14 45 79 b8 da 86 3c
0050 1b ee d2 00 ab f0 db 24 39 54 f2 e4 00 89 ac 68
0060 5f 96 cf 90 58 58 60 2e 7c 87 06 8d 0f 3c 0c b7
0070 b3 3b 17 73 0f 79 ec d4 d2 2f fd b4 2b 98 bb 1c
0080 26 1a a2 d7 05 5a 8a 41 de f9 3a de 17 f9 69 33
0090 58 48 b4 1b 8a 2e 67 11 74 a6 48 7d 81 25 9c 1f
00a0 0b 29 75 01 b8 e5 42 f0 4b bc c2 6a cb 7b 56 08
00b0 d9 66 a7 6c a0 e0 ca 80 64 8b 0e ee 5f 28 be d4
00c0 3b d0 7e a1 2c 23 42 bf 09 2b d9 27 03
解析
qq协议头
0020 .. .. .. .. .. .. .. .. .. .. 02 3a 57 08 25 11
0030 15 73 17 17 b4 03 00 00 00 01 01 01 00 00 6a 4b
0040 00 00 00 00 .. .. .. .. .. .. .. .. .. .. .. ..
02 qq报文指定前缀3a 57 版本号, 可从这里 得知为QQ9.5.9 灰度正式版(28605/28606)08 25 登录命令11 15 序列号, 序列号默认为每个包递增73 17 17 b4 qq id hex03 00 00 fixed const00 01 01 01 客户端类型00 00 6a 4b 发行编号00 00 00 00 fixed const
TEA密钥, 16字节长
0040 .. .. .. .. b8 99 86 00 03 14 45 79 b8 da 86 3c
0050 1b ee d2 00 .. .. .. .. .. .. .. .. .. .. .. ..
TEA密文
0050 .. .. .. .. ab f0 db 24 39 54 f2 e4 00 89 ac 68
0060 5f 96 cf 90 58 58 60 2e 7c 87 06 8d 0f 3c 0c b7
0070 b3 3b 17 73 0f 79 ec d4 d2 2f fd b4 2b 98 bb 1c
0080 26 1a a2 d7 05 5a 8a 41 de f9 3a de 17 f9 69 33
0090 58 48 b4 1b 8a 2e 67 11 74 a6 48 7d 81 25 9c 1f
00a0 0b 29 75 01 b8 e5 42 f0 4b bc c2 6a cb 7b 56 08
00b0 d9 66 a7 6c a0 e0 ca 80 64 8b 0e ee 5f 28 be d4
00c0 3b d0 7e a1 2c 23 42 bf 09 2b d9 27 ..
用Tea解密结果:
001800160001 0000045f00000001000016ff 731717b4 0000 00000309000a 000a0004 78e815b6 0002003600120002000100000000000000000000000000000114001d0103 0019 027bb75bfbed8d28d1f1bcad2065b24bdc594ab8a52f60d88a 051100060a0000000001
001800160001 固定6字节0000045f00000001000016ff 固定12字节731717b4 qqid0000 fixed const78e815b6 120.232.20.24 目标服务器(dst)的ip hex, 可以用这个工具生成0019 后面token的长度为25字节027bb75bfbed8d28d1f1bcad2065b24bdc594ab8a52f60d88a token051100060a0000000001 fixed const
固定结尾
00c0 .. .. .. .. .. .. .. .. .. .. .. .. 03
0825 返回包
0825返回包(服务器发送)
原始数据
c85acf44cc81ec41182512910800457400939b12400035113d0778e81418c0a81f241f40f57b007fde35023a5708251115731717b40000006bb7f0867436bf1be9b560a67834497e59f60988affe5d52594f92dde9a60e7361741a79ad9ea1180886c51514a8b9f9ddd3a38348da8b08fdac2f84a5c73758940a5c0168cc6adfca142de0ef763e7d07a9ced632930d4350fc53e5a325324146249a56d823545103
hex视图
0000 c8 5a cf 44 cc 81 ec 41 18 25 12 91 08 00 45 74
0010 00 93 9b 12 40 00 35 11 3d 07 78 e8 14 18 c0 a8
0020 1f 24 1f 40 f5 7b 00 7f de 35 02 3a 57 08 25 11
0030 15 73 17 17 b4 00 00 00 6b b7 f0 86 74 36 bf 1b
0040 e9 b5 60 a6 78 34 49 7e 59 f6 09 88 af fe 5d 52
0050 59 4f 92 dd e9 a6 0e 73 61 74 1a 79 ad 9e a1 18
0060 08 86 c5 15 14 a8 b9 f9 dd d3 a3 83 48 da 8b 08
0070 fd ac 2f 84 a5 c7 37 58 94 0a 5c 01 68 cc 6a df
0080 ca 14 2d e0 ef 76 3e 7d 07 a9 ce d6 32 93 0d 43
0090 50 fc 53 e5 a3 25 32 41 46 24 9a 56 d8 23 54 51
00a0 03
解析
qq协议头
0020 .. .. .. .. .. .. .. .. .. .. 02 3a 57 08 25 11
0030 15 73 17 17 b4 00 00 00 .. .. .. .. .. .. .. ..
3a 57 qq版本号08 25 登录命令11 15 序列号73 17 17 b4 qq id hex00 00 00 fixed const
密文
0030 .. .. .. .. .. .. .. .. 6b b7 f0 86 74 36 bf 1b
0040 e9 b5 60 a6 78 34 49 7e 59 f6 09 88 af fe 5d 52
0050 59 4f 92 dd e9 a6 0e 73 61 74 1a 79 ad 9e a1 18
0060 08 86 c5 15 14 a8 b9 f9 dd d3 a3 83 48 da 8b 08
0070 fd ac 2f 84 a5 c7 37 58 94 0a 5c 01 68 cc 6a df
0080 ca 14 2d e0 ef 76 3e 7d 07 a9 ce d6 32 93 0d 43
0090 50 fc 53 e5 a3 25 32 41 46 24 9a 56 d8 23 54 51
Tea用一开始的tea key解密结果:
00 0112 0038 b36b6e93dd2c93a0efff4a129df6b1103e80975e46188430cc6142f62409b14d53fbfa576d2d835ddadce4d0cb8be9206ff46063c72f67f4 0017000e0001 6274c3a4 78ebbf1fd4b5000003100004 78e81418
00 无需更换服务器0112 fixed constb36b6e93dd2c93a0efff4a129df6b1103e80975e46188430cc6142f62409b14d53fbfa576d2d835ddadce4d0cb8be9206ff46063c72f67f4 密钥0017000e0001 fixed const6274c3a4 时间hex78e81418 120.232.20.24 来源服务器的ip hex
固定结尾
00a0 03
0836 发送包
0836发送包
原始数据
ec4118251291c85acf44cc810800450003429144000040110000c0a81f2478e81418f57b1f40032e700c023a5708366148731717b40300000001010100006a4b00000000000201030019027bb75bfbed8d28d1f1bcad2065b24bdc594ab8a52f60d88a0000001066762c87707cf5de93d9c7e837e8e7e6883ebe9cd158374921efa7d4392e33ef9ae0965988257ce5e3b9ae9e4d31c2dfed7eb5b5da7d863de63df01b5e22bf8e383cff4ed00bfea9760cd8de7f1177effc1d716cbdf775e56e032a04dd2f2444fa9a607f3ff2bcb0f3229acc2e889dc5eb9a7f23b581b0f39b60eed3a104233c38f6736a2acd7a0ccf932fb00de2c61718c5d81ec950a2be7676eb096d84484198b11b7deb69c7680293878f6936f4ce310f1f86e44d3913c97693188f9728007b44d1f82e7a645425f6667f71c8411f424144693c034f96ed317b8e89f8b8875ab56721a1d5b6f87dac83a2be459c2460686a88ad9dbde2f5ed6a8548f3ab05ee3c1e86a81cc811596e66f1d3a26a6f5d4a80662a0bf00827a8c49837dc02e70fd51bab408ad7e3a9b807905cfbd5666bf606e72f7ba7af53424ab5dec46e0294812d70198268985fae1b13703c28e27c88d69afae91d6db9c4a83c558ba8d8ce2acc3e3fd4d0e983f80f84e2d3d3172ea1584fcf15f26190a3416deb76934dcabfec6e19d0b0d0c7d1e1a37350b8bcc9d374d1ad62361b70bc2224dfc1d39c4d94ba017ffd7c397435e188ece1c2829895d1e0ff972291a83c045a4bf85997c662dfed3a23e757211743f2de7b0ba543f93d6c9a993130b338746a5892209397dbe58735f49d4c10fc320186bbd06140e777124e0ba96a2c1d64bbde0af54bee2b0140c720b5033497a863224b971f905985c4ea411658defbd211ae53906279458c6f5682bfc5a77f6ee8908b40d72f81236d40f225fe63112813128c2a2bc5d1a399766b7e767c098c1c3ce397e3b7434ceb3996cb885b652266187489dd428dad24f57105f8c17cd34d007c57acea0a0e7a6d8af4bb96cf4508b3d733af44b739c8c997323cf7909f7486c04115d251dca4fde643f10c504e99ba3a58ba99d8a77912501ca56dd6bfec2be69d22639915e9387bb19b6ef8ae954b24aadf750b28c8727adac8ef2be125ef5618ad42780d9acbb33b4ffd196490e5b531a5e8d87c84e641878103
hex视图
0000 ec 41 18 25 12 91 c8 5a cf 44 cc 81 08 00 45 00
0010 03 42 91 44 00 00 40 11 00 00 c0 a8 1f 24 78 e8
0020 14 18 f5 7b 1f 40 03 2e 70 0c 02 3a 57 08 36 61
0030 48 73 17 17 b4 03 00 00 00 01 01 01 00 00 6a 4b
0040 00 00 00 00 00 02 01 03 00 19 02 7b b7 5b fb ed
0050 8d 28 d1 f1 bc ad 20 65 b2 4b dc 59 4a b8 a5 2f
0060 60 d8 8a 00 00 00 10 66 76 2c 87 70 7c f5 de 93
0070 d9 c7 e8 37 e8 e7 e6 88 3e be 9c d1 58 37 49 21
0080 ef a7 d4 39 2e 33 ef 9a e0 96 59 88 25 7c e5 e3
0090 b9 ae 9e 4d 31 c2 df ed 7e b5 b5 da 7d 86 3d e6
00a0 3d f0 1b 5e 22 bf 8e 38 3c ff 4e d0 0b fe a9 76
00b0 0c d8 de 7f 11 77 ef fc 1d 71 6c bd f7 75 e5 6e
00c0 03 2a 04 dd 2f 24 44 fa 9a 60 7f 3f f2 bc b0 f3
00d0 22 9a cc 2e 88 9d c5 eb 9a 7f 23 b5 81 b0 f3 9b
00e0 60 ee d3 a1 04 23 3c 38 f6 73 6a 2a cd 7a 0c cf
00f0 93 2f b0 0d e2 c6 17 18 c5 d8 1e c9 50 a2 be 76
0100 76 eb 09 6d 84 48 41 98 b1 1b 7d eb 69 c7 68 02
0110 93 87 8f 69 36 f4 ce 31 0f 1f 86 e4 4d 39 13 c9
0120 76 93 18 8f 97 28 00 7b 44 d1 f8 2e 7a 64 54 25
0130 f6 66 7f 71 c8 41 1f 42 41 44 69 3c 03 4f 96 ed
0140 31 7b 8e 89 f8 b8 87 5a b5 67 21 a1 d5 b6 f8 7d
0150 ac 83 a2 be 45 9c 24 60 68 6a 88 ad 9d bd e2 f5
0160 ed 6a 85 48 f3 ab 05 ee 3c 1e 86 a8 1c c8 11 59
0170 6e 66 f1 d3 a2 6a 6f 5d 4a 80 66 2a 0b f0 08 27
0180 a8 c4 98 37 dc 02 e7 0f d5 1b ab 40 8a d7 e3 a9
0190 b8 07 90 5c fb d5 66 6b f6 06 e7 2f 7b a7 af 53
01a0 42 4a b5 de c4 6e 02 94 81 2d 70 19 82 68 98 5f
01b0 ae 1b 13 70 3c 28 e2 7c 88 d6 9a fa e9 1d 6d b9
01c0 c4 a8 3c 55 8b a8 d8 ce 2a cc 3e 3f d4 d0 e9 83
01d0 f8 0f 84 e2 d3 d3 17 2e a1 58 4f cf 15 f2 61 90
01e0 a3 41 6d eb 76 93 4d ca bf ec 6e 19 d0 b0 d0 c7
01f0 d1 e1 a3 73 50 b8 bc c9 d3 74 d1 ad 62 36 1b 70
0200 bc 22 24 df c1 d3 9c 4d 94 ba 01 7f fd 7c 39 74
0210 35 e1 88 ec e1 c2 82 98 95 d1 e0 ff 97 22 91 a8
0220 3c 04 5a 4b f8 59 97 c6 62 df ed 3a 23 e7 57 21
0230 17 43 f2 de 7b 0b a5 43 f9 3d 6c 9a 99 31 30 b3
0240 38 74 6a 58 92 20 93 97 db e5 87 35 f4 9d 4c 10
0250 fc 32 01 86 bb d0 61 40 e7 77 12 4e 0b a9 6a 2c
0260 1d 64 bb de 0a f5 4b ee 2b 01 40 c7 20 b5 03 34
0270 97 a8 63 22 4b 97 1f 90 59 85 c4 ea 41 16 58 de
0280 fb d2 11 ae 53 90 62 79 45 8c 6f 56 82 bf c5 a7
0290 7f 6e e8 90 8b 40 d7 2f 81 23 6d 40 f2 25 fe 63
02a0 11 28 13 12 8c 2a 2b c5 d1 a3 99 76 6b 7e 76 7c
02b0 09 8c 1c 3c e3 97 e3 b7 43 4c eb 39 96 cb 88 5b
02c0 65 22 66 18 74 89 dd 42 8d ad 24 f5 71 05 f8 c1
02d0 7c d3 4d 00 7c 57 ac ea 0a 0e 7a 6d 8a f4 bb 96
02e0 cf 45 08 b3 d7 33 af 44 b7 39 c8 c9 97 32 3c f7
02f0 90 9f 74 86 c0 41 15 d2 51 dc a4 fd e6 43 f1 0c
0300 50 4e 99 ba 3a 58 ba 99 d8 a7 79 12 50 1c a5 6d
0310 d6 bf ec 2b e6 9d 22 63 99 15 e9 38 7b b1 9b 6e
0320 f8 ae 95 4b 24 aa df 75 0b 28 c8 72 7a da c8 ef
0330 2b e1 25 ef 56 18 ad 42 78 0d 9a cb b3 3b 4f fd
0340 19 64 90 e5 b5 31 a5 e8 d8 7c 84 e6 41 87 81 03
解析
qq协议头
0020 .. .. .. .. .. .. .. .. .. .. 02 3a 57 08 36 61
0030 48 73 17 17 b4 03 00 00 00 01 01 01 00 00 6a 4b
0040 00 00 00 00 00 02 01 03 00 19 .. .. .. .. .. ..
02 qq协议指定前缀3a 57 qq客户端版本08 36 二次登录命令61 48 该包序列号73 17 17 b4 qq id hex03 00 00 fixed const00 01 01 01 client type00 00 6a 4b 发行编号00 00 00 00 00 fixed const02 01 推测是subVer03 00 推测是echd ver19 fixed const
DhPublickey
0040 .. .. .. .. .. .. .. .. .. .. 02 7b b7 5b fb ed
0050 8d 28 d1 f1 bc ad 20 65 b2 4b dc 59 4a b8 a5 2f
0060 60 d8 8a .. .. .. .. .. .. .. .. .. .. .. .. ..
fixed const
0060 .. .. .. 00 00 00 10 .. .. .. .. .. .. .. .. ..
随机
0060 .. .. .. .. .. .. .. 66 76 2c 87 70 7c f5 de 93
0070 d9 c7 e8 37 e8 e7 e6 .. .. .. .. .. .. .. .. ..
密文 是用DhShareKey私钥加密
0070 .. .. .. .. .. .. .. 88 3e be 9c d1 58 37 49 21
0080 ef a7 d4 39 2e 33 ef 9a e0 96 59 88 25 7c e5 e3
0090 b9 ae 9e 4d 31 c2 df ed 7e b5 b5 da 7d 86 3d e6
00a0 3d f0 1b 5e 22 bf 8e 38 3c ff 4e d0 0b fe a9 76
00b0 0c d8 de 7f 11 77 ef fc 1d 71 6c bd f7 75 e5 6e
00c0 03 2a 04 dd 2f 24 44 fa 9a 60 7f 3f f2 bc b0 f3
00d0 22 9a cc 2e 88 9d c5 eb 9a 7f 23 b5 81 b0 f3 9b
00e0 60 ee d3 a1 04 23 3c 38 f6 73 6a 2a cd 7a 0c cf
00f0 93 2f b0 0d e2 c6 17 18 c5 d8 1e c9 50 a2 be 76
0100 76 eb 09 6d 84 48 41 98 b1 1b 7d eb 69 c7 68 02
0110 93 87 8f 69 36 f4 ce 31 0f 1f 86 e4 4d 39 13 c9
0120 76 93 18 8f 97 28 00 7b 44 d1 f8 2e 7a 64 54 25
0130 f6 66 7f 71 c8 41 1f 42 41 44 69 3c 03 4f 96 ed
0140 31 7b 8e 89 f8 b8 87 5a b5 67 21 a1 d5 b6 f8 7d
0150 ac 83 a2 be 45 9c 24 60 68 6a 88 ad 9d bd e2 f5
0160 ed 6a 85 48 f3 ab 05 ee 3c 1e 86 a8 1c c8 11 59
0170 6e 66 f1 d3 a2 6a 6f 5d 4a 80 66 2a 0b f0 08 27
0180 a8 c4 98 37 dc 02 e7 0f d5 1b ab 40 8a d7 e3 a9
0190 b8 07 90 5c fb d5 66 6b f6 06 e7 2f 7b a7 af 53
01a0 42 4a b5 de c4 6e 02 94 81 2d 70 19 82 68 98 5f
01b0 ae 1b 13 70 3c 28 e2 7c 88 d6 9a fa e9 1d 6d b9
01c0 c4 a8 3c 55 8b a8 d8 ce 2a cc 3e 3f d4 d0 e9 83
01d0 f8 0f 84 e2 d3 d3 17 2e a1 58 4f cf 15 f2 61 90
01e0 a3 41 6d eb 76 93 4d ca bf ec 6e 19 d0 b0 d0 c7
01f0 d1 e1 a3 73 50 b8 bc c9 d3 74 d1 ad 62 36 1b 70
0200 bc 22 24 df c1 d3 9c 4d 94 ba 01 7f fd 7c 39 74
0210 35 e1 88 ec e1 c2 82 98 95 d1 e0 ff 97 22 91 a8
0220 3c 04 5a 4b f8 59 97 c6 62 df ed 3a 23 e7 57 21
0230 17 43 f2 de 7b 0b a5 43 f9 3d 6c 9a 99 31 30 b3
0240 38 74 6a 58 92 20 93 97 db e5 87 35 f4 9d 4c 10
0250 fc 32 01 86 bb d0 61 40 e7 77 12 4e 0b a9 6a 2c
0260 1d 64 bb de 0a f5 4b ee 2b 01 40 c7 20 b5 03 34
0270 97 a8 63 22 4b 97 1f 90 59 85 c4 ea 41 16 58 de
0280 fb d2 11 ae 53 90 62 79 45 8c 6f 56 82 bf c5 a7
0290 7f 6e e8 90 8b 40 d7 2f 81 23 6d 40 f2 25 fe 63
02a0 11 28 13 12 8c 2a 2b c5 d1 a3 99 76 6b 7e 76 7c
02b0 09 8c 1c 3c e3 97 e3 b7 43 4c eb 39 96 cb 88 5b
02c0 65 22 66 18 74 89 dd 42 8d ad 24 f5 71 05 f8 c1
02d0 7c d3 4d 00 7c 57 ac ea 0a 0e 7a 6d 8a f4 bb 96
02e0 cf 45 08 b3 d7 33 af 44 b7 39 c8 c9 97 32 3c f7
02f0 90 9f 74 86 c0 41 15 d2 51 dc a4 fd e6 43 f1 0c
0300 50 4e 99 ba 3a 58 ba 99 d8 a7 79 12 50 1c a5 6d
0310 d6 bf ec 2b e6 9d 22 63 99 15 e9 38 7b b1 9b 6e
0320 f8 ae 95 4b 24 aa df 75 0b 28 c8 72 7a da c8 ef
0330 2b e1 25 ef 56 18 ad 42 78 0d 9a cb b3 3b 4f fd
0340 19 64 90 e5 b5 31 a5 e8 d8 7c 84 e6 41 87 81 ..
固定结尾
0340 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 03
end
|