Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183871
  • 博文数量: 58
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 14
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-29 17:51
文章分类
文章存档

2015年(3)

2014年(8)

2013年(47)

我的朋友

分类: 网络与安全

2013-11-14 15:56:48

原文地址:QQ协议分析之消息数据包 作者:chenshko

*   发送消息的包,格式为
*   1.   头部   7个字节(1.   包头标志,1字节,0x02,2.   客户端版本代码,2字节,3.   命令,2字   节,4.   包序号,   2字节)
*   2.   发送者QQ号,4个字节
*   3.   接收者的QQ号,4个字节
*   4.   发送者QQ版本,2字节
*   5.   发送者QQ号,4字节
*   6.   接收者QQ号,4个字节(奇怪,为什么要搞两个在里面)
*   7.   发送者QQ号和session   key合在一起用md5处理一次的结果,16字节
*   8.   消息类型,2字节(41)
*   9.   会话ID,2字节,如果是一个操作需要发送多个包才能完成,则这个id必须一致
*   10.   发送时间,4字节
*   11.   发送者头像,2字节
*   12.   字体信息,4字节,设成0x00000001吧,不懂具体意思
*   13.   消息分片数,1字节,如果消息比较长,这里要置一个分片值,QQ缺省是700字节一个分片,这个700字节是纯消息,
*   不包含其他部分
*   14.   分片序号,1字节,从0开始(55)
*   15.   消息的id,2字节,同一条消息的不同分片id相同
*   16.   消息方式,是发送的,还是自动回复的,1字节
*   17.   消息内容,最后一个分片的结尾需要追加一个空格。
*   Note:   结尾处的空格是必须的,如果不追加空格,会导致有些缺省表情显示为乱码
*   18.   消息的尾部,包含一些消息的参数,比如字体颜色啦,等等等等,顺序是
*   1.   字体修饰属性,bold,italic之类的,2字节,已知的位是
*   i.   bit0-bit4用来表示字体大小,所以最大是32
*   ii.   bit5表示是否bold
*   iii.   bit6表示是否italic
*   iv.   bit7表示是否underline
*   2.   颜色Red,1字节
*   3.   颜色Green,1字节
*   4.   颜色Blue,1字节
*   5.   1个未知字节,置0先
*   6.   消息编码,2字节,0x8602为GB,0x0000为EN,其他未知,好像可以自定义,因为服务器好像不干涉
*   7.   字体名,比如0xcb,   0xce,   0xcc,   0xe5表示宋体
*   19.   1字节,表示18和19部分的字节长度
*   20.   包尾部
*
*   请求传送文件的包,这是这个包的另一种用法,其格式为
*   1   -   14.   1到14部分均与发送消息包相同,只有第8部分不同,对于UDP的请求,8部分是0x0035,对于TCP,是0x0001
*   15   -   17.   怀疑也和发送消息包相同,但是在这种情况中,这部分没有使用,为全0,一共11个0字节
*   18.   传输类型,1字节,表示是传文件还是传表情
*   19.   连接方式字节,UDP是0,   TCP是3
*   20.   4个字节的发送者外部ip地址(也就是可能为代理地址)
*   21.   2个字节的发送者端口
*   22.   2个字节的端口,第一个监听端口,TCP没有这个部分
*   23.   4个字节的地址,真实IP
*   24.   2个字节的端口,第二个而监听端口
*   25.   空格符号做为上述信息的结束,一个字节,0x20
*   26.   分隔符0x1F
*   27.   要传送的文件名
*   28.   分隔符0x1F
*   29.   字节数的字符串形式后跟 "   字节 ",比如文件大小3字节的话,就是 "3   字节 "这个字符串的编码形式
*   30.   尾部
*
*   同意传送文件的包,格式为
*   1   -   24.   除了8部分,其他均与发送消息包相同。对于UDP的情况,8部分是0x0037,TCP是0x0003。
*   UDP时,最后的本地ip和端口都是0;TCP时没有22部分
*   25.   尾部
*
*   拒绝接收文件的包,格式为
*   1   -   19.   除了8部分,均与同意传送文件包相同。对于UDP的情况,8部分是0x0039,对于TCP,是0x0005
*   20.   尾部
*
*   通知我的IP信息,格式为
*   1   -   24.   除了8部分,均与请求传送文件包相同。8部分是0x003B
*   25.   尾部
*
*   取消传送文件,格式为
*   1   -   18.   除了8部分,均与请求传送文件包相同。8部分是0x0049
*   19.   尾部
*
*   要求别人主动连接我的包,格式为
*   1   -   18.   除了8部分,均与请求传送文件包相同。8部分是0x003F
*   19.   尾部
阅读(2106) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~