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 .. .. .. .. .. .. .. .. ..