QQ媒体文件的协议分析
0000 00 06 5b e0 34 0a 00 02 3f ac 40 3f 08 00 45 00
0010 00 d6 62 46 00 00 80 11 57 55 3b 40 84 c0 3b 40
0020 85 3b 10 d0 05 e8 00 c2 56 cc:03(包头) 0c 49(客户端版本) 62(随机密钥) 9f c0
0030 XX XX(发方QQ号) 9d 0c XX XX(收方QQ号) 00 00 05 00 02(2 byte计数位) 01(RTP包类型) 80 67(RTP头) 43 b9(2 byte计数位)
0040 00 00 50 0d 22 81 2c 2e :c7 12 68 66 9b a8 f1 fa
0050 4c c2 27 ee 98 0c 4c 96 8c f8 03 a6 aa a0 41 d2
0060 30 e6 0e 6e 8e 61 da 31 df b5 9a dc f7 fc 78 98
0070 d7 53 17 f8 77 d8 c7 62 a2 a9 76 2d 64 0c 0e f3
0080 18 d5 f9 1d ec 01 52 90 fb b5 9d 88 a3 81 d1 02
0090 83 48 a8 8d a8 45 74 ea 4b 54 29 d9 7d 96 0b 78
00a0 80 ba 00 18 3f 24 e8 69 98 ab 4a a4 a0 4e af 48
00b0 55 0d ed e9 70 c5 ca d6 0a 85 44 7c aa a7 ea 50
00c0 bc 9f 60 e0 95 f5 d7 2d 42 90 75 ae 0a 08 01 59
00d0 56 2b a0 cd 8a c6 f2 50 61 30 82 8f 64 49 0e 1b
00e0 11 4d 2a 2f
这是一个QQ的媒体数据包,QQ视频的数据就是依照此格式收发媒体信息的,0x03是UDP负载的第一字节,表示的是媒体数据包的数据,如果是0x00,则为媒体数据包的控制信息。后面紧跟着是发送端QQ的版本号,随后的9个字节包含了收发两端QQ号码信息,具体算法可以参照lumaqq协议分析中关于0x00号和0x03号的报文格式计算得出。后面的0x00,0x00,0x05可以视为是媒体报文的固定格式,经观察,这一位没有什么变化,在往后的两个字节为视频的计数位,计数是按照不同类的媒体数据分别计数的,后面马上要说到的一个字节就表示媒体类型,0x00为SIP数据包,0x01是音频数据,0x02为音频的RTCP,0x03是视频数据,0x04是视频数据的RTCP,此后的数据可以查看RTP协议文档,但是在协议要求里面RTP和RTCP是应该分在两个端口传输的,而QQ视频通信确实在同一个端口,与协议要求有所出入,不过却能减少QQ客户端在视频数据和视频信令两者之间的同步,效果也是非常不错的。