QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4372|回复: 0

腾迅自定义头像下载协议分析

[复制链接]
发表于 2008-12-11 09:00:16 | 显示全部楼层 |阅读模式
自定义头像分析:

服务器URL: cface_tms.qq.com
服务器端口:4000

下载步骤:
1。 请求自定义头像
2。 请求自定义头像回应
3。 请求下载
4。 请求下载回应
5。 图像下载


自定义头像包包头(46字节):
1 -- byte 0     : 0x03, 包起始符
2 -- byte 1     : 包命令, 1字节, 0x04 为信息命令, 0x02为传输命令
3 -- byte 2 - 3 : 随机号, 未知, 2字节
4 -- byte 4 - 5 : 0x0000, 2字节
5 -- byte 6 - 7 : 包序号, 2字节, 根据包命令不同,使用不同序号队列, 但都从以1开始,
                        依次+1, 如果是请求下载包,
6 -- byte 8 - 13: 6 字节 0x00
7 -- byte 14- 15: 2 字节, 未知标志, 客户端发出的总是0x0000, 0x0001为是否是数据包标志
8 -- byte 16- 39: 24字节, 全0x00
9 -- byte 40    : 1字节, 本次操作需要的包数
10-- byte 41    : 1字节, 本次操作的包序号, 范围在 0 到 第9部分减1 之内
11-- byte 42    : 1字节, 0x00, 分隔标志
12-- byte 43- 44: 2字节, 版本标志, 服务器是0x0000
13-- byte 45    : 1字节, 0x00


请求自定义头像信息:
1 -- 包头 (2命令: 0x04,  5子命令:0x0001 (big endian), 7 0x0000, 9 0x01
2--  byte 46- 53 : 8字节, 全0x00
3 -- byte 54- 55 : 2字节, 后面包长度, 不包括这两个字节
4 -- byte 56     : 1字节, 0x01
5 -- byte 57     : 1字节, 0x00
6 -- byte 57 - 58: 2字节, 后面请求好友QQ号的个数
     注意:一次请求最多可以请求20个QQ好友的自定义头像资料
7 -- byte 59 - 62: 4字节, 好友QQ号
8 -- 重复 7 部分, 直到到达 6 部分指定的个数


请求自定义头像信息回应包:
1    包头 (2命令: 0x04,  5子命令:0x0001 (big endian), 7 0x0001, 9 0x01
2--  byte 46- 53 : 8字节, 全0x00
3 -- byte 54- 55 : 2字节, 后面包长度, 不包括这两个字节
4 -- byte 56     : 1字节, 0x00
5 -- byte 57     : 1字节, 0x02
6 -- byte 58 -59 : 2字节, 后面好友信息块的个数
7 -- byte 60 -63 : 4字节, 好友QQ号
8 -- byte 64 -67 : 4字节, session id
9 -- byte 68 -83 : 16字节, 头像文件的md5值, 也当做文件名来用
10-- 重复 7, 8, 9 部分, 直到到达 6 部分指定的个数


请求下载包:
1    包头 (2命令: 0x02,  5子命令:0x0001 (big endian), 7 0x0000, 9 0x01
2--  byte 46- 53 : 8字节, 全0x00
3 -- byte 54- 55 : 2字节, 后面包长度, 不包括这两个字节
7 -- byte 56 - 59: 4字节, 好友QQ号
8 -- byte 60     : 1字节, 未知, 总是0x01, 猜测是后面session id的个数
9 -- byte 61 - 64: 4字节, session id
10-- byte 65 - 68: 4字节, 起始偏移量, 开始默认全部 0xff
11-- byte 69 - 72: 4字节, 请求数据长度, 开始默认全部 0x00


文件传送通知包:
1    包头 (2命令: 0x02,  5子命令:0x0001 (big endian), 7 0x0000, 9 0x01
2--  无


图象文件传送包:
1    包头 (2命令: 0x02,  5子命令:0x0001 (big endian), 7 0x0001, 9 0x07
2--  byte 46- 53 : 8字节, 全0x00
3 -- byte 54- 55 : 2字节, 后面包长度, 不包括这两个字节, 最大0x0335字节
4 -- byte 56     : 1字节, 0x00, 分隔符?
5 -- byte 57 - 60: 4字节, 好友QQ号
6 -- byte 61 - 64: 4字节, session id
7 -- byte 65 - 68: 4字节, 头像文件总大小
8 -- byte 69 - 72: 4字节, 图象偏移量, 即本包数据第一个字节的偏移字节数
9 -- byte 73 - 76: 4字节, 后面图象数据长度
10-- byte 77 -end: 图象数据, 因为是BMP图片所以第一个包的开始是“BM”


至于具体的流程和实现, 还是参照我在论坛里给的源程序代码的
src/api/evauhmanager.h/cpp 部分.

[ Last edited by yunfan on 2005-9-28 at 10:48 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-16 20:52 , Processed in 0.101094 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表