网络协议数据获取与QQ协议分析Word下载.docx
- 文档编号:6077014
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:16
- 大小:452.93KB
网络协议数据获取与QQ协议分析Word下载.docx
《网络协议数据获取与QQ协议分析Word下载.docx》由会员分享,可在线阅读,更多相关《网络协议数据获取与QQ协议分析Word下载.docx(16页珍藏版)》请在冰点文库上搜索。
用户∕服务器模式,即发信用户和收信用户必须通过服务器来交流。
MSN、QQ、AIM、YahooMessenger等主流即时通信软件使用的是用户∕服务器的模式,文本消息通过服务器中转发送。
如图3-1所示,以一台注册域名的服务器为总调度台。
每个即时通信客户端通过己注册的用户ID和密码登陆服务器,密码信息一般都通过加密后传送。
通过服务器验证通过后,服务器返回通过验证的信息给客户端,同时附加一些信息,负责中转连接的服务器IP、端口号、客户端的好友信息等。
客户端利用服务器返回的验证信息和获得的IP地址及端口号与中转服务器建立连接。
连接建立成功后就通过中转服务器与上线的好友互发消息。
文本消息传输一般是建立在TCP协议或UDP协议基础之上,服务器通过提供固定的服务端口被动地与客户端进行通讯,起到消息中转的作用。
图3-1即时通信网络架构的用户/服务器模式
另一种是用户∕用户模式,即服务器给每对用户建立一个TCP通道,用户间的交流在这个TCP之上进行而无需通过服务器。
如图3-2所示。
图3-2即时通信网络架构的用户∕用户模式
对腾讯QQ来说,登陆过程是通过TCP协议或UDP协议与服务器建立连接,文字消息通过与登陆相同的协议进行转发。
QQ两用户之间语音通信和视频通信则是采用P2P的用户∕用户模式。
2.传输层UDP、TCP协议
对于协议数据单元(PDU)的分析主要关注PDU的首部,UDP和TCP数据的首部分别如图3-3、图3-4所示。
图3-3UDP数据首部
图3-4TCP数据首部
3.网络层IP协议
IP数据首部以及首部与数据的相对位置如图3-5、图3-6所示。
图3-5IP数据首部
图3-6数据首部相对位置
三、实验环境以及设备
1、操作系统:
Windows
2、网络接入方式:
以有线连接方式通过路由器连入校园网
3、本机的MAC地址:
00-0A-E4-CA-A9-1F
4、本机的IP地址:
192.168.1.100
5、子网掩码:
255.255.255.0
6、默认网关:
192.168.1.1
7、DHCP服务器:
8、DNS服务器:
10.0.0.10
4、实验内容
为了便于分析,本实验只选取4类QQ动作的数据包进行分析:
登录数据包,心跳信息数据包,收/发文字消息数据包,注销登录数据包进行分析。
1.登录数据包
本实验采用2010版的QQ客户端,登陆服务器的协议类型可以由用户选择,UDP类型或者是TCP类型。
(1)首先采用UDP协议登录,登录设置如图4-1所示。
登录服务器的IP地址默认选为219.133.49.171,默认端口是8000;
图4-1QQ客户端登录协议设置为UDP
抓包方法:
启动Wireshark;
启动腾讯QQ客户端,设置登录协议为UDP,但不登录;
启动Wireshark开始抓包;
登录QQ;
QQ登录成功后停止抓包。
抓包结果如图4-2所示,本地向登录服务器219.133.49.171连续发送3个UDP数据包,之后变成了本地与119.147.45.84,可以看出,QQ的登录服务器与消息中转服务器不是一个服务器。
而且本地向登录服务器219.133.49.171连续发送3个UDP数据包数据内容相同,所以只详细分析第一个数据包。
图4-2UDP登录抓包结果
接下来逐层对数据包内容进行分析:
A)数据链路层
74-EA-3A-36-4E-90:
目的MAC地址为小型路由器的MAC地址
00-0A-E4-CA-A9-1F:
源MAC地址为本机的MAC地址
00-45:
网络层协议为IP协议
B)网络层
45:
版本IPv4,首部长度20字节
00:
区分服务
00-73:
总长度115字节
2a-6e:
标识
00-00:
标志和片偏移
40:
生存时间64
11:
传输层协议UDP(17)
C)传输层
0f-a0:
源端口4000
1f40:
目的端口8000
00-5f:
长度95字节
cf-ad:
检验和
D)应用层QQ协议
首先说明,一次抓包不足以分析QQ协议,一下的分析是由多次抓包结合查阅文献得到。
02:
QQ报文的开头
1c-51:
QQ客户端的版本号,实验所用版本为QQ2010
00-91:
用户请求登陆的命令的序号
03-14:
发送数据的序号
20-cd-20-0c:
用户QQ号码,实验中为550313996
之后的内容为加密的数据内容
最后一个字节03:
QQ报文的结尾
(2)使用TCP类型登陆,登陆设置如图4-3所示,登录服务器的IP地址为219.133.60.173,默认端口是443。
抓包方法与UDP协议登陆相同。
图4-3QQ客户端登录协议设置为TCP
图4-4TCP登录抓包结果
抓包结果如图4-4所示。
本地向登陆服务器219.133.60.173连续发送3个TCP数据包,内容相同,之后也变成本地与中转服务器119.147.45.84用UDP协议进行通信。
对第一个TCP数据包的各层进行详细分析。
A)数据链路层:
(同上UDP类型登陆)
B)网络层:
IP协议(同上UDP类型登录)
C)传输层:
TCP协议
d6-bf:
源端口54975
01-bb:
目的端口443
5e-13-25-12:
序号
00-00-00-00:
确认号
a0-02:
数据偏移,标志
20-00:
窗口大小8192字节
da-6d:
紧急指针
其余部分为可选字段和填充字节
由对第一个TCP数据包的分析可知,数据包中并没有含有应用层的内容,原因可能是因为与登录服务通信失败,也可能是QQ协议中应用层的登陆数据就是在UDP数据包中发送。
结合抓包结果,再分析本机与转发服务器119.147.45.84通信的第一个数据包,只分析其应用层的数据。
用户请求登陆的命令序号
6c-c5:
可见,协议内容与直接用UDP类型登陆相同,我们可以认为,0x0091就代表QQ的登陆命令。
2.心跳消息数据包
在即时通信软件客户端与服务器通信过程中,使用UDP协议传送数据并不是建立固定连接,只要QQ与客户端连接,客户端就要每隔1分钟左右发送一个此类包,以告知服务器自己处于连接状态,服务器也要回复一个同种类的包进行确认。
保持QQ客户端在线,不进行任何操作;
打开wireshark开始抓包;
抓包一段时间后,观察到本机与服务器进行了几次交互后,停止抓包。
抓包结果显示本机与服务器的这几次交互的数据包内容基本相同,对其应用层数据进行分析。
00-58:
表示用户在线的命令(心跳消息)序号
47-66:
3.收发文字消息数据包
发送文字消息数据包指的是QQ客户端向服务器发送文字消息的数据包。
接收文字消息数据包指的是QQ客户端接收到来自服务器文字消息的数据包。
QQ在线状态,不做任何操作;
向某一个好友发送任意文字消息(或者收到任一好友发来的文字消息);
停止抓包。
需要重复多次以选取其中有共同特征的数据包。
抓包结果,QQ客户端向服务器发送文字消息的数据包的格式如下:
客户端向服务器发送消息的命令序号
38-6d:
同时可以发现,QQ客户端向服务器每发送一个UDP数据包,服务器马上就回复一个数据包,以确认收到消息,回复的数据包格式如下:
发送数据的序号,与客户端向服务器发送的UDP数据包中命令序号相同
QQ客户端收到服务器文字消息的数据包格式与发送数据包格式基本相同,差别只在于收到消息的命令序号不是0x00cd,而是0x00ce,同时客户端也要向服务器反馈一个数据包,以确认收到消息。
4.注销登录数据包
当QQ客户端离线或者退出客户端程序时,需要先向服务器发送此类数据包告知。
保持QQ客户端在线;
退出QQ客户端;
抓包结果如图4-5所示,本地先向服务器119.147.45.84发送3个内容相同的UDP数据包,服务器再反馈3个相同的数据包,客户端再发送4个相同的数据包进行确认。
图4-5QQ注销登录抓包结果
客户端先发送的3个数据包较大,主要为数据部分,只对其首部进行分析:
00-b9:
客户端注销登录的命令序号
5c-ff:
服务器反馈的3个数据包内容如下:
客户端最后发送4个相同的进行确认的数据包内容如下:
00-62:
客户端注销登录并确认的命令序号
7d-90:
五、腾讯QQ协议分析总结
腾讯QQ的网络构架采用用户∕服务器模式,其通信协议是以请求——响应模式工作的。
即客户端发出一个请求,服务器端会给出一个相应的响应;
服务器向客户端发送信息,客户端也会给服务器相应的响应。
客户端与服务器发送的报文格式基本相同。
请求和响应通过相同的序列号来进行配对(请求代码也相同)。
而且每种请求的发起方都是相同的。
QQ协议在传输层支持UDP和TCP两种基本协议方式,两种方式的数据包结构基本是一样的,为了提高效率,在默认情况下,QQ使用UDP类型登陆,也是使用UDP协议传送文本信息,同时为了保证可靠性,在请求登陆和注销登录时,都会发送3-4个相同的UDP数据包。
QQ协议应用层数据的结构如表1所示。
表1QQ协议应用层数据的结构
字节
内容及说明
报文开头,所有报文均以0x02开头
1~2
以网络字节序表示的QQ版本号
3~4
以网络字节序表示的命令序号
5~6
发送序号,接收回应时必须校验这个序号。
此序号有可能是随机生成。
7~10
用户QQ号,十六进制以网络字节序表示
11~N-1
MD5加密的数据内容
N
报文的结束,所有报文以0x03结束
可知,QQ协议数据包应用层的前11个字节是首部。
首部的第3、4字节为命令编号,与QQ客户端的不同动作相对应,本实验分析获得的对应关系如表2。
表2QQ客户端动作对应的命令序号
动作
命令序号
登录
0x0091
心跳消息
0x0058
发送文字消息
0x00cd
收到文字消息
0x00ce
注销登录
0x00b9+0x0062
此外,命令序号还与QQ客户端版本有关,经过实验,在QQ2009,QQ2010中,所用的命令序号功能均相同。
但在QQ2003中,不同动作对应的命令序号与QQ2010则不同。
在wireshark抓包软件中,有时能识别出QQ数据包,并在协议一栏显示为OICQ,但是识别的动作并不正确,也不是所有的QQ数据包都能识别出来,个人分析其原因是wireshark协议库中的存储的是老版本的QQ协议,命令序号也对应的是老版本的QQ协议。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 协议 数据 获取 QQ 分析