网络数据包监视程序开发(九)
来源:互联网 发布:京东火牛软件 编辑:程序博客网 时间:2024/05/18 12:00
还算有点进展,终于把QQ登录时的数据包给彻底的分析清楚了。
QQ的登录过程在前面的一篇日志里已经说明了,现在就直接说明数据包的格式吧。
QQ数据报文总的格式
QQ数据是通过UDP方式传输的,服务器的默认端口号是8000,所有的QQ发送的报文格式如下:
字节 内容及含义 0 报文的开头,大部分都是0x02,也有0x0,0x03,0x04,0x06,与登录有关的报文的包头是0x02 1--2 两个字节的以网络字节顺序表示的QQ版本号 3--4 两个字节的以网络字节顺序表示的命令号 5--6 指令序列号。QQ的指令总是成对出现的,也就是说,一方发出一个命令,将会收到另一方的同样序列号的应答。另外,发送方每条指令的序列号都是上一条指令的加一。有两个方面要注意的是,每一方都维持自己的序列号,也就是说,客户端的当前序列号和服务器的当前序列号是不一致的,当客户端为指令发出方的时候,它使用自己的当前序列号,而服务器作为应答方,在应答的时候使用的接受到的命令的序列号;反之,如果是服务器是指令的发出方,那么它就使用自己的当前序列号,而不用理会客户端上一条指令的序列号。另外一个事情是,由于服务器会同时和多个客户端通信,所以,对每个客户端收到的服务器指令的序列号不是连续的,序列号的连续性不应该作为丢包的判断依据。另外,通信开始客户端的第一个序列号是随机选取的,但似乎没有发现大过0x00ff的。最后的退出登录数据包总是使用0xffff作为序列号,而且是不会有应答的。 7--N
具体的数据,可能加密也可能不加密。
N+1 包尾,绝大部分是0x03,但有时也是没有的情况,要根据包头判断。获得登录令牌
获得登录令牌的报文格式如下:
字节 内容及含义 0 包头:0x02 1--2 网络字节顺序表示的QQ版本号 3--4 请求登录令牌的命令号:0x0062 5--6 指令序列号,可以随机的 7--10 网络字节顺序的QQ号 11 未知字节:0x00 12 包尾:0x03
下面这个就是我获取到的QQ请求登录令牌的数据:02 0e 2d 00 62 63 e2 27 04 0d f6 00 03 ,其中0x0e2d就是登录QQ的版本号,0x27040df6为登录的QQ号:654577142。
如果成功,服务器会返回数据,这时要检查收到的数据的命令号是否也为0x0062,并且序列号是否为发送是租用的序列号。如果不是,表示有错误,可以继续接收下一个包,直到超时。
回应包的格式如下:
字节 内容及含义 0 包头:0x02 1--2 服务器标识:0x0000(一般都是) 3--4 0x0062 5--6 序列号,和刚才发往服务器的是一样的 7 0 表示成功 8 令牌数据的长度 9--N 令牌数据 N+1 包尾:0x03
下面的是我抓到的一个包:
02 00 00 00 62 63 e2 00
18 73 a3 b6 97 09 23 e3
79 84 4c d6 f0 c7 31 92
b4 00 eb 89 d7 4e df 0b
9f 03
0x18表示令牌的数据长度:24,蓝色部分数据就是服务器返回的登录令牌。
- 网络数据包监视程序开发(九)
- 网络数据包监视程序开发日志(三)
- 网络数据包监视程序开发日志(四)
- 网络数据包监视程序开发日志(五)
- 网络数据包监视程序开发(七)
- 网络数据包监视程序开发(八)
- 网络数据包监视程序开发日志(一)
- 网络数据包监视程序开发日志(二)
- 网络数据包监视程序开发(六)--QQ登录过程
- 网络数据包监视程序开发(十一)---ARP欺骗
- 网络数据包监视程序开发(十三)---QQ密码加密方式
- 网络数据包监视程序开发(十四)---毕设结束了
- 网络数据包监视程序开发(十)---截取指定网段的数据包
- 网络数据包监视程序开发(十二)---Windows下启用IP路由选择
- 网络数据包监视 - 类
- 简单的网络数据包分析小程序
- linux命令之----tcpdump用于截取或监视网络传输的数据包
- 另类挂钩-RING3数据包监视
- gcc的编译连接参数也是讲究排列顺序的
- 一个超好的程序
- 技术博客开通
- 解读spring源代码心得
- VC做的登陆框
- 网络数据包监视程序开发(九)
- 进化链中关键动物化石被发现
- 空虚,无聊的大学生活
- 13种时间管理的方法
- JUNO平台数据库连接池配置
- 使用xmlhttp为网站增加股市行情查询功能
- CSDN BLOG 发表文章过长 导致出错的 解决方法
- 双网卡的问题
- VSFTP配置手册