一、 实验目的:
在虚拟机下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协议的分析,当时自己对于协议也不是很明白,但是通过查阅资料,还是独立完成了这么一次分析,由于时间过得太久,当时查阅的资料早已忘记出处。真的很感谢网络上前辈们、朋友们的无私分享,我们今天才得以有那么多资料查阅,衷心感谢!还要感谢姚老师的指导。文中有错之处,还望批评指出,在此先谢过!
相关推荐
QQ协议代码参考资源.zip是一个包含了与QQ项目相关的代码和协议文档的压缩文件。这个资源对于开发者来说是一个宝贵的工具,特别是那些想要深入理解QQ客户端与服务器之间通信机制的程序员。通过研究这些代码,开发者...
在本压缩包"易语言源码易语言手机QQ协议版源码.rar"中,包含的是使用易语言编写的手机QQ协议的实现代码,这为我们提供了深入理解QQ通信协议以及易语言编程实践的宝贵资源。 首先,源码使用说明.txt文件很可能是对...
QQ协议是腾讯公司为其即时通讯软件QQ设计的一套通信协议,它定义了客户端与服务器之间交互的格式和规则。在编程领域,理解并实现QQ协议可以让开发者创建与QQ平台进行数据交换的应用,例如自定义的聊天客户端或者...
腾讯QQ协议总汇是关于腾讯公司即时通讯软件QQ的数据传输协议的详细解析,对于开发者来说,深入了解这些协议有助于实现与QQ客户端的交互或者自定义通信功能。本文将深入探讨QQ协议的基本结构、主要协议类型以及如何...
PCQQ协议是QQ桌面客户端的通信协议,它比手机QQ协议更为复杂,涵盖了更多的功能如群聊、视频通话等。C#实现的PCQQ协议源码可能包括了多线程处理、加密算法的应用、复杂的消息格式解析等内容。开发者可以通过分析这...
《深入解析iPhone QQ协议源码》 iPhone QQ协议源码是许多iOS开发者梦寐以求的技术资源,尤其对于那些热衷于即时通讯应用开发的程序员来说,它的重要性不言而喻。QQ作为中国最大的社交平台之一,其在移动设备上的...
手机QQ协议源码是深入理解即时通讯(IM)技术的重要参考,它包含了用户登录、信息发送与接收等核心功能的实现。在这个解析中,我们将详细探讨这些知识点。 首先,我们来了解一下**手机QQ协议**。QQ协议是腾讯公司为...
Java手机QQ协议是一种用于在移动设备上实现QQ通信的技术,主要基于Java编程语言。QQ作为中国最流行的即时通讯工具之一,其手机版本的协议解析和实现对于开发者来说具有一定的研究价值,尤其是对于想要深入理解网络...
《安卓QQ协议详解:安卓QQ登录与加好友机制解析》 在移动通信领域,QQ作为一款深受用户喜爱的即时通讯应用,其安卓版本的协议解析是开发者和安全研究者关注的焦点。本文将深入探讨“安卓QQ协议”,揭秘安卓QQ的登录...
【C# 手机QQ协议解析与应用】 手机QQ协议是腾讯公司为移动设备开发的即时通讯协议,它允许用户通过非官方客户端进行聊天、发送文件、管理联系人等操作。C#作为一款广泛应用于Windows平台的编程语言,可以通过.NET ...
【安卓QQ协议登录源码】涉及的是Android平台上使用QQ第三方登录的应用开发技术。在移动应用开发中,集成社交网络如QQ、微信等的登录接口,能够提升用户体验,方便用户快速注册和登录。以下是对这个主题的详细解释: ...
QQ协议分析是对腾讯公司开发的即时通讯软件QQ的通信协议进行深入研究的领域。QQ协议是QQ客户端与服务器之间通信的基础,它定义了数据传输的格式、内容和流程,包括登录、聊天、文件传输、群组管理等多个方面的交互...
QQ协议分析工具是一种专门用于研究和理解QQ通信协议的软件,它可以帮助用户深入解析QQ客户端与服务器之间的数据交互过程。这些工具通常具有抓包、解码、分析等功能,对于网络技术人员、安全研究人员以及对QQ协议感...
### 详细QQ协议解析过程 #### 一、概述 QQ作为一种广泛应用的即时通讯软件,在其背后隐藏着复杂的网络通信协议。对于网络安全工程师、协议分析师以及对网络通信感兴趣的开发者来说,理解QQ协议的工作原理是非常...
QQ协议分析是网络通信技术领域中的一个重要话题,尤其是在即时通讯软件开发中,它涉及到客户端与服务器之间的数据交换规范。本文将深入探讨QQ协议的核心概念、发送接收流程、数据打包与解密过程,以及如何通过文档...
QQ协议源码是一种用于理解和操作QQ相关功能的编程代码,主要涵盖了如何与腾讯的QQ服务器进行通信、执行各种任务如发送消息、管理群聊、自动加好友或粉丝、点赞以及获取用户信息等。这个亲测可用的源码,意味着开发者...
易语言手机QQ协议1.4版源码是一个针对手机QQ通信协议进行解析和模拟实现的编程项目,主要用于学习和研究QQ通信机制。易语言是一种基于汉语词汇的编程语言,旨在降低编程的难度,让更多人能够理解和掌握编程技术。在...
### QQ协议分析图知识点概述 #### 一、QQ协议概览 - **文件名**:“QQ协议分析图.pdf” - **描述**:该文档详细分析了QQ2008版本的传输协议,提供了关于QQ通信过程中使用的加密算法、密钥交换机制以及数据包格式等...
QQ协议分析工具主要针对腾讯QQ的通信协议进行深入解析,帮助用户理解QQ是如何在网络中传输信息的。在IT行业中,协议分析是网络诊断、安全审计和软件开发的重要环节。WinPcap_3_0.exe是一个常用的网络数据包捕获库,...