QQ传输协议分析

一、 实验目的:

  在虚拟机下NAT模式下通过Wireshark抓包,分析QQ的传输模式。了解QQ在传输信息过程中用到的协议。分析在Nat模式下,信息传输的穿透性。

二、 实验环境:

  Win7 专业版32位(在虚拟机里面)。

  Win7 旗舰版64位(物理机)

  QQ版本:TM2013

  Wireshark

三、 实验内容:

1、 QQ登录

  1)、UDP登录

  在虚拟机的win7打开QQ面板,设置登录服务器的类型为UDP

  启动wireshark,然后开始登录QQ,登录成功等待一会儿停止wireshark的抓包。

  抓包如图:

  我们可以看到本地向远程登录服务器183.60.48.174发送了一个UDP的数据包,这个就是IP就是在刚才设置UDP登录时的系统默认IP,还可以看到这个IP返回了一个UDP的数据包。看来这两个包就应该是登录验证的包,接下来的几个包的服务器IP变成了183.60.48.165,由于这个IP和登录服务器的IP位于统一网段,因此我们可以猜测这个IP是腾讯用来存储我们发送的信息的服务器。需要注意的是,在多次实验下,可以发现服务器不止183.60.48.165这一个,这是因为想QQ这样的大吞吐量的信息交互,必须用多台服务器分流,所以这个IP并不一定是某一个。下面的一些包应该就是心跳包。那个OIQC协议就是QQ用的协议,其实实际上也是一个UDP包。下面的DNS协议就是因为我的QQ是在虚拟机里面登录的,在向外网交互信息的时候会通过网关192.168.214.2解析。

  我们来分析一下登录时候的UDP包

  从这个图我们可以得知源和目的的IP,mac地址,还有双方的端口号等等一些信息。

  数据链路层:

  目的MAC地址:00 50 56 e3 56 95

  本机MAC地址: 00 0c 29 ba 59 3c

  网络层:

  通过查询资料和分析我们知道:

  45:版本IPv4,首部长度20字节

  00:区分服务

  00-73:总长度175字节

  36-1e:标识

  00-00:标志和偏移

  80:生存时间128

  11:传输协议UDP(17)

  传输层:

  0f-a0:源端口4000

  1f-40:目的端口8000

  009b:长度155字节

  7f-c4:检验和

  QQ的数据

  通过查询资料和分析我们知道:

  02:QQ报文的开头

  34-20:QQ客户端的版本号,实验所用版本为QQTM2013

  08-25:用户请求登陆的命令的序号

  67-dc:发送数据的序号

  56-a6-d2-5c:用户QQ号码,实验中为1453773404

  之后的内容为加密的数据内容

  最后一个字节03:QQ报文的结尾

  2)、TCP登录

  设置如图:

  启动wireshark,然后开始登录QQ,登录成功等待一会儿停止wireshark的抓包。

  抓包如图:

  可以看到几个TCP的包还有一个SSL的包

  对TCP包分析如图:

  通过对UDP协议的分析,我们可以看到数据层和网络层的十六进制代码和之前的一模一样,这里我们就值分析传输层的TCP协议了,如图:

  通过查询资料和分析我们知道:

  C4-5e:源端口号50270

  01- bb:目的端口443

  45-34-fc-63:序号

  00-00-00-00:确认号

  80-02:数据偏移,标志

  20-00:窗口大小8192字节

  7f-3b:检验和

  00-00:紧急指针

  其余部分为可选字段和填充字节

  在TCP协议里面我们没有看到QQ的登录验证消息。为什么呢?一看这里还有一个SSL协议,QQ会不会是通过SSL验证的呢?

  SSL((Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。)

  那么我们来看看这个包:

  02:QQ报文的开头

  34-20:QQ客户端的版本号,实验所用版本为QQTM2013

  08-25:用户请求登陆的命令的序号

  67-dc:发送数据的序号

  56-a6-d2-5c:用户QQ号码,实验中为1453773404

  之后的内容为加密的数据内容

  最后一个字节03:QQ报文的结尾

  可见,这个包的信息和UDP登录时候的一样,那么TCP登录是确实使用了SSL。

2、 心跳消息数据包

  如图,通过IP地址查询,可以知道119.147.45.40是广东深圳的IP,而深圳是腾讯的老巢。在多次的抓包中也可以看到这个IP段,所以我们有理由相信,这个IP段是腾讯的。

  那么我们打开来看看。

  看到这里,确实有很熟悉哦。通过查阅资料和分析我们知道:

  通过查询资料和分析我们知道:

  02:QQ报文的开头

  34-20:QQ客户端的版本号,实验所用版本为QQTM2013

  00-58:用户在线的命令序号

  3b-09:发送数据的序号

  56-a6-d2-5c:用户QQ号码,实验中为1453773404

  之后的内容为加密的数据内容

  最后一个字节03:QQ报文的结尾

3、 收发信息数据包

  对方在线的时候

我们看看第一个包:

  可以看到蓝色字体那里的02是QQ报文的开头,这里需要注意的就是00-cd是客户端向服务器发送消息的命令序号,1b-db是发送数据序号,其他的都一样。通过几次实验发现,00-cd客户端向服务器发送消息的命令序号是固定的,而1b-db发送数据序号是会改变的。

而且没每送一个包,服务器是会回复一个包给客户端的。

四、实验总结:

  通过实验我还发现QQ貌似是会和每一个在线好友建立一个连接,因为当我登录只有一个好友的QQ时,wireshark抓到的包就几个,而登录有上百好友的QQ时,发现连接数也有数百个。

PS:这是去年10月份我们老师给我们讲网络协议时,自己做的一次对QQ协议的分析,当时自己对于协议也不是很明白,但是通过查阅资料,还是独立完成了这么一次分析,由于时间过得太久,当时查阅的资料早已忘记出处。真的很感谢网络上前辈们、朋友们的无私分享,我们今天才得以有那么多资料查阅,衷心感谢!还要感谢姚老师的指导。文中有错之处,还望批评指出,在此先谢过!

时间: 2024-10-18 16:38:32

QQ传输协议分析的相关文章

QQ2010协议分析系列(五) - 山寨QQ手机版(Android)

QQ山寨比较多,前段时间密码被盗了,用了几年的QQ,密码被盗,非常生气,正好有时间,研究了QQ2010协议.现在有所小成,基本完成了QQ的协议分析和基本源码,登录和聊天没有问题.并且做成了android版本,其他部分有待于优化,关键没有时间,密码找回了,我就没怎么去研究了,等以后有时间再弄.另外本人swing不是很好,所以重点没有放在界面上,而是放在协议解析上.这里当然感谢lumaqq,它应该让我了解QQ协议框架.算是站在巨人肩膀上. 今天终于找到了官方QQ2010的图片资源文件,它存在qq的安

协议分析TMP

最近闲来有事, 分析了一个非常低端(非常低端的意思是说你不应该对她是否能取代你现有的QQ客户端作任何可能的奢望,她只是一个实验性的东西)的手机QQ的协议, 是手机QQ3.0,      所用到的TCP/HTTP通信协议版本是1.4, 也不知道是哪一年release的了, 至少有七八年的历久了吧, 反正就是: 功能非常弱! 主要的分析原因是想学学网络方面的编程经验(这是我第2次弄socket编程 :-) ), 以及学学怎么抓包分析. 主要用到的工具软件 手机QQ3.0: http://www.ru

thrift的TCompactProtocol紧凑型二进制协议分析

Thrift的紧凑型传输协议分析: 用一张图说明一下Thrift的TCompactProtocol中各个数据类型是怎么表示的. 报文格式编码: bool类型: 一个字节. 如果bool型的字段是结构体或消息的成员字段并且有编号,一个字节的高4位表示字段编号,低4位表示bool的值(0001:true, 0010:false),即:一个字节的低4位的值(true:1,false:2). 如果bool型的字段单独存在,一个字节表示值,即:一个字节的值(true:1,false:2). Byte类型:

编译2.6.35内核安装L7-filter2.23实现七层过滤及QQ协议分析

一.前言 本文,接着上篇<Linux下Netfilter/IPTables防火墙案例分析>来说说七层过滤. iptables等防火墙工作在四层及四层以下,都是通过数据包过滤或能够基于传输层状态检测的. 但是一般企业应用的时候,很多场景下,需要提供屏蔽不良内容.封堵某些应用层软件的功能. QQ是一款最常用的即时通讯软件,但是很多情况下,它的使用会影响工作效率,所以有需求要把QQ屏蔽掉. 如果识别QQ的特征? IP检查,不行.因为它的服务器IP地址段有可能变化. 端口检查,不行.局域网必须放行向外

基于文件传输的UDP协议分析(1)

网络通信与数据交换已经成为现代软件必备的基础功能. 目前公司上下位机的网络通信均采用TCP/ UDP协议进行数据交换和控制.这种低层次的网络通信协议在小数据量,少互交的领域有着较大的优势.但是随着网络功能需求的日趋旺盛,TCP/UDP协议日渐无法满足需求,其弊端日渐明显 *TCP/UDP通信编程可分为: 1  通信控制层 通信控制层负责网络的配置,连接,发送数据, 接受数据响应, 中断等服务 2数据处理层 数据处理层主要负责数据的封包,解包,校验等工      作.简称: "数据协议的程序化过程

【转】QQ传输文件原理参考(来自互联网)

QQ的文件发送是怎样的过程呢?通常,发送文件的计算机首先要通过消息服务器将其IP地址发送给接收计算机,当接收计算机同意接收的确认消息反馈到消息服务器后,消息服务器将据此设置好文件传输对话.随即,发送计算机与接收计算机就会在确定好的端口范围内,建立起TCP或UDP连接开始文件的检索与传输. 在默认状态下,QQ优先采用了UDP(User Data Protocol,用户数据报协议)协议传送数据,而对可靠性要求高的数据通讯系统往往使用TCP协议传输数据.与TCP协议不同,UDP协议并不提供数据传送的验

QQ 通信原理分析(转)

之前写过一个简单的IM,当时遇到过各种令人崩溃的问题:事后也没有做很好的总结,现在看到这篇文章,感慨良多,特此转摘过来,以做备忘. 出处:http://blog.csdn.net/lxnkobe/article/details/7521331 下面有4个基本的问答: 问题一:为什么只要可以连上互联网的计算机都可以用QQ相互建立通信,而不需要固定IP?也就是这个QQ用户端是怎样找到另一个QQ用户的,而用户在每次使用时他可能用的是不同的计算机,有着不同的IP地址.服务器端不会以qq用户端的ip作为唯

APP账号密码传输安全分析

最近在搞公司的安卓APP测试(ThinkDrive 企邮云网盘)测试,安卓app测试时使用代理抓包,发现所此app使用HTTP传输账号密码,且密码只是普通MD5加密,存在安全隐患,无法防止sniffer攻击.中间人攻击(因此这次安全问题,加强对这两安全术语的了解): 问题1:账号密码采用http传输,账号与密码(MD5值)均可以捕获: 问题2:密码虽采用MD5加密,简单密码可以在线解密: 问题3:密码不解密也一样可以登录,通过A账号在app登录,再用sniffer得到的B 帐号与密码(MD5值)

HTTP协议分析

http协议介绍 目录: 一.http协议版本 二.http文档的生成方式 三.http协议的报文 四.http请求方法 五.http状态码分析 一.http协议(版本) 1.http:Hyper Text Transfer Protocol超文本传输协议,是互联网应用最广泛的一种网络协议,主要用于web服务,通过计算机处理文本消息,格式为HTML(Hyper Text Mark Language)超文本标记语言实现 2.http协议的版本: (1).http0.9:仅与用户传输html文档 (