
WireShark概览
1、Wireshark 是网络报文分析工具。网络报文分析工具的主要作用是尝试捕获网络报文, 并尝试显示报文尽可能详细的内容。过去的此类工具要么太贵,要么是非公开的。 直到Wireshark(Ethereal)出现以后,这种情况才得以改变。Wireshark可以算得上是今天能使用的最好的开源网络分析软件。2、WireShark简史:1997年,Gerald Combs 需要一个工具追踪网络问题,并且想学习网络知识。所以他开始开发Ethereal (Wireshark项目以前的名称) 以解决自己的需求。1998年,Ethreal020版诞生了。此后不久,越来越多的人发现了它的潜力,并为其提供了底层分析。2006年Ethreal改名为Wireshark。2008年,在经过了十年的发展后,Wireshark发布了10版本。3、WireShark的主要作用,就是可以抓取各种端口的报文,包括有线网口、无线网口、USB口、LoopBack口等等,从而就可以很方便地进行协议学习、网络分析、系统排错等后续任务。4、不同平台下的WireShark:目前WireShark支持几乎所有主流报文文件,包括pcap,cap ,pkt,enc等等。但是不同平台下的WireShark却有功能上的不同。总体来说,Linux版本WireShark的功能和特性比Windows版本的要丰富和强大。例如,Linux版本的WireShark可以直接抓取USB接口报文,而Windows版本就不行。
Figure 1,Linux下的WireShark
Figure 2,Windows下WireShark
Figure 3,各平台下的WireShark所支持的协议
各平台下的WireShark支持的协议如上图所示。从图中可以看到Linux下的版本功能最强大,由于平台本身特性,可以使WireShark几乎支持所有协议。但由于我们平时工作中主要抓取以太网报文,且绝大部分的 *** 作系统都是Windows,所以本文还是以Windows平台下的WireShark为例来进行说明。
如何正确使用WireShark抓取报文
1、WireShark组网拓扑。为了抓到HostA与HostB之间的报文,下面介绍几种WireShark组网。
i在线抓取:如果WireShark本身就是组网中的一部分,那么,很简单,直接抓取报文就行了。
ii 串联抓取:串联组网是在报文链路中间串联一个设备,利用这个中间设备来抓取报文。这个中间设备可以是一个HUB,利用HUB会对域内报文进行广播的特性,接在HUB上的WireShark也能收到报文。
若是WireShark有双网卡,正确设置网络转发,直接串接在链路上。
也可以利用Tap分路器对来去的报文进行分路,把报文引到WireShark上。
串联组网的好处是报文都必须经过中间设备,所有包都能抓到。缺点是除非原本就已经规划好,不然要把报文链路断开,插入一个中间设备,会中断流量,所以一般用于学习研究,不适用于实际业务网以及工业现场以太网。
iii 并联抓取:并联组网是将现有流量通过现网设备本身的特性将流量引出来。
若是网络本身通过HUB组网的,那么将WireShark连上HUB就可以。
若是交换机组网,那直接连上也能抓取广播报文。
当然,最常用的还是利用交换机的镜像功能来抓包。
并联组网的优点是不用破坏现有组网,适合有业务的在线网络以及工业现场以太网。缺点是HUB组网已经不常见,而交换机组网的设备开启镜像后,对性能有非常大的影响。
2、 WireShark的安装。WireShark是免费开源软件,在网上可以很轻松获取到。Windows版的WireShark分为32位而64位两个版本,根据系统的情况来决定安装哪一个版本,虽然64位系统装32位软件也能使用,但装相应匹配的版本,兼容性及性能都会好一些。在Windows下,WireShark的底层抓包工具是Winpcap,一般来说WireShark安装包内本身就包含了对应可用版本的Winpcap,在安装的时候注意钩选安装就可以。安装过程很简单,不再赘述。
3、使用WireShark抓取网络报文。Step1 选择需要抓取的接口,点选Start就开始抓包。
4、使用WireShark抓取MPLS报文。对于mpls报文,wireshark可以直接抓取带MPLS标签的报文。
5、使用WireShark抓取带Vlan Tag的报文。早期网卡的驱动不会对VLAN TAG进行处理,而是直接送给上层处理,在这种环境下,WireShark可以正常抓到带VLAN TAG的报文。而Intel,broadcom,marvell的网卡则会对报文进行处理,去掉TAG后再送到上层处理,所以WireShark在这种情况下通常抓不到VLAN TAG。这时我们需要针对这些网卡做一些设置,WireShark才能够抓取带VLAN TAG的报文。1) 更新网卡的最新驱动。2) 按照以下说明修改注册表:a) Intel:HKEY_LOCAL_MACHINE\SYSTEM \ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} \00xx(where xx is the instance of the network adapter that you need to see tags on )PCI或者PCI-X网卡增加dword:MonitorModeEnabled,通常设置为1即可 0 - disabled (Do not store bad packets, Do not store CRCs, Strip 8021Q vlan tags) 1 - enabled (Store bad packets Store CRCs Do not strip 8021Q vlan tags) PCI-Express网卡增加dword:MonitorMode,通常设置为1即可 0 - disabled (Do not store bad packets, Do not store CRCs, Strip 8021Q vlan tags) 1 - enabled (Store bad packets Store CRCs Do not strip 8021Q vlan btag) 2 - enabled strip vlan (Store bad packets Store CRCs Strip 8021Q vlan tag as normal);b) Broadcom:在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet下搜索,找到"TxCoalescingTicks"并确认这是唯一的,增加一个新的字符串值"PreserveVlanInfoInRxPacket",赋值1。c) Marvell Yukon 88E8055 PCI-E 千兆网卡:"HKLM\SYSTEM \CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318} \000"(where 000 is the number of the folder for the Marvel ethernet controller)增加DWORD:SkDisableVlanStrip:1;3) 以Intel网卡为例,对网卡进行配置。选择Intel网卡的本地连接,右键属性
点击“配置”按钮。
在VLAN选项卡中,加入任意一个VLAN,激活接口的VLAN TAG上送功能。此时可以把“本地连接”接口看成是一个Trunk接口。
配置完VLAN后,如果发现系统禁用了“本地连接”接口,则只要启用它,会看到网络连接中会出现一个新的子接口“本地连接2”。
在WireShark上查看抓取“本地连接”接口的报文。
可以看到已经可以抓到有VLAN TAG的报文了。
由于此时的子接口都是有VLAN属性的,所以无法当成正常的网卡来用。如果想要在抓VLAN包的同时,还能够与网络正常通信,只要再新建一个未标记的VLAN就行。
这时,会生成一个对应的子接口“本地连接3”,在这个接口上正确配置网络参数,就可以正常通信了。
本文以App作为例子,实际应用不限于App范围。
大部分场合都可以通过程序调试来定位问题,但有些场景使用抓包来定位接口问题更准确、更方便,如以下场景:
要实现对App的网络数据抓包,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。
但是中间网络节点,不受我们控制,所以基本无法实现抓包的,只能在客户端和服务端进行抓包。
通常我们监控本地网卡数据,如下图:
本地网络 指的是WIFI的路由,如果直接抓路由器的包还是比较麻烦的,因此我们会在 手机 和 本地路由 之间加一层 代理服务 ,这样只要抓代理服务的网络数据即可:
虽然在 手机 侧也可实现抓包,但和 本地路由 一样,抓包比较麻烦,如果不是没有办法,尽量还是不在手机侧抓包。但是有一种情况必须在手机端抓包,那就是在4G网络情况下:
4G网络状态下如何抓包,以及它的劣势,我们后面章节再细讲。
抓包实际上是分析网络协议的一种过程,尽管繁琐的细节劳动都让抓包工具做了,但我们还是需要了解下基础的网络协议,好帮助我们更好的分析问题。
首先需要了解下经典的OSI七层网络模型,以及每层的作用,其次对TCP、HTTP协议简单了解。
HTTPS是基于HTTP协议的一种改进,在 TCP之上 的会话层增加安全处理。对于应用层来说,HTTPS和HTTP没有什么不同,也就是说,HTTPS是保证网络传输的安全性,对业务数据无侵入。
简化理解大概是这个样子:
SSL和TLS是保证安全传输的协议,包括证书认证、加解密和数字签名。
项目中HTTPS的链路:
因此,客户端与后台,编写网络接口时,不需要关心SSL或TLS,按照HTTP协议处理即可。
既然HTTPS在网络传输是经过加密的,那么抓包抓到的数据就是密文,不经过解密是无法看到报文的。针对这个问题,如上图WIFI环境下设置代理的方式可以解决,具体思路是:
所以整个网络链路依然是HTTPS在传输,但代理服务自己可以获取到明文数据。
比较常用的抓包工具大概有4个,主要用作互补,配合使用基本所有平台、所有抓包需求都能满足:
需要说明的是,tcpdump可将数据保存成文件,直接用wireShark打开分析,针对后台或手机抓包使用起来十分方便。
几个工具间的使用关系:
为什么要真机抓包?必定是没有办法设置代理服务了,如4G网络情况下直接和移动基站链接,没法设置代理服务。凡是非4G网络状态下,都不建议真机抓包。
iOS 5后,apple引入了RVI remote virtual interface的特性,它只需要将iOS设备使用USB数据线连接到mac上,然后使用rvictl工具以iOS设备的UDID为参数在Mac中建立一个虚拟网络接口rvi,就可以在mac设备上使用tcpdump,wireshark等工具对创建的接口进行抓包分析。
具体步骤:
android是linux系统,和后台一样可以使用tcpdump命令来抓包,但是需要root权限,因为一般手机系统不带有抓包命令 tcpdump ,需要自行安装。
安装tcpdump:
使用tcpdump:
这是就已经进入抓包状态,手机所有的网络请求都会被捕获,并保存到capture文件中。
导出capture文件:
原文: 网络抓包
点击WIRESHARK图标,打开WIRESHARK程序
在菜单栏找到抓包选项
点击抓包,展开详细选项,点选第一个网络接口
在新的窗口中点击开始选项,开始抓包,
程序开始抓包,效果如图
从抓包中找到ARP的条目,双击那个条目
7
这就是我们所要抓包的内容了,之后进行分析处理。
1、下载安装好工具软件,Fiddler进行安装。安装方法一路NEXT既可!
2、安装完成后打开软件:选择 Tools > Fiddler Options:打开HTTPS标签。
3、再次选择Tools > Fiddler Options:打开 connect 标签。按照图中进行勾选!
在图中的端口“8888”自己要记好,后面配置手机时要用到!默认的既可。
4、查看本机IP地址,记好“本机的IP地址”,在手机配置中需要用到。
5、进一步对手机进行配置。打开手机设置——WIFI——选择你当前所用的WIFI,按住不放(大概1秒左右)会出现:清除网络、修改密码、静态IP、代理设置四个选项,在这里选择代理设置进入到下一个设置界面。
6、打开设置界面后:打开代理服务器;在服务器输入第4步中的本地IP地址:19216812;端口输入“8888”,设置完成后点击保存。到此手机端也设置完成。
7、这是你就可以抓包了,切记手机和电脑要在一个局域网内。
Wireshark是一个抓取网络数据包的工具,这对分析网络问题是很重要的,下文将会简单的介绍下如何使用Wireshark来抓包。1、在如下链接下载“Wireshark”并在电脑上安装。2、如果之前没有安装过“Winpcap”请在下面把安装“Winpcap”的勾选上。
我这里理解你的cap包指的就是wireshark抓到的数据包,以后简称数据包。以此回答问题如下:
1、如何分析数据包这个问题要看你分析的是什么协议的包,不同的目的对应不同的分析方法,但是有一些是基础的,他们是通用的。
2、在用wireshark打开数据包后,默认界面一般分为上中下三部分,上面是数据包的列表集合,每一行代表一个交互消息。如果选中其中一条,则会在中间那一部分展开这一条的详细内容,分析主要就看这一部分。最下面的是原始消息的二进制表达法,我一般都不看,不分析,直接忽略的。
3、分析数据包先要有个基本的概念,就是OSI的7层数据模型,从低往高依次:物理层,数据链路层,网络层,传输层,(会话层,表示层),应用层。wireshark解析过的消息也是按照这个顺序展示的。不过具体应用时,会话层和表示层基本都不用,大多数都直接过渡到应用层,有的甚至没有应用层,没有传输层,网络层等,但是物理层和数据链路层一般都是有的。
4、MAC地址是数据链路层,也就是第二层的概念,如果要看他的信息,就需要在第二层找,也就是你上图图中间那部分,可以看到有2行,第一行是物理层信息,第二行就是数据链路层,MAC地址信息就在第二层查找,每一层都可以双击打开,查看更详细的信息。
5、IP地址是网络层,也就是第三层的概念,如果你的网卡根本就没获取到IP地址,那么你抓的数据包中是不可能有这些信息的。就像你图中展示的一样,根本就没有三层的信息,说明你网卡根本就没获取到IP地址,所以,不可能有IP地址信息。
6、我给你截了个相对完整的截图,如下:
先看图的上半部分,可以看到我选择的是一条DNS查询消息(灰色部分为选中的交互消息),再看该消息的详细部分,也就是图的下半部分,从图中可以看出共五条(行),分别对应OSI模型中的物理层,数据链路层(MAC地址所在层),网络层(IP地址所在层),传输层(确定是通过UDP传输还是TCP传输),和应用层(确定应用协议,在这里应用协议是DNS协议)。
7、不知道回答是不是你想要的,如果我理解有偏差可以追问。希望以上信息对你有用。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)