Wireshark简介
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以通过免费的途径取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是全世界最广泛的网络封包分析软件之一。
Wireshark抓包示例
1、下载并且安装好Wireshark后打开软件(本文以Wireshark Version 3.4.9 介绍)打开后我们可以看到,Wireshark可以自动识别出电脑上面的网卡(包括虚拟网卡),这里我们双击我们需要抓包的网卡。
2、双击进入此界面后,Wireshark已经自动开始了抓包过程,如果网卡在与其他网络设备通讯,我们就能看到如下图所示的各种网络协议报文。
3、ping www.ebyte.com
4、由于Wireshark抓取的是网卡物理层的数据,所以所有通过该网卡收发的数据都会被Wireshark抓取,这就让我们从海量数据中找到我们需要关注的网络包就如同大海捞针,但是Wireshark提供了强大的数据包过滤功能,我们就能比较轻松地找到对应的包。比如上面我已经ping了我司官网,现在Wireshark已经抓取了两万多条报文,只要通过在过滤器输入”ip.addr == 101.37.40.78 && icmp“就能找到对应的报文。
TCP报文抓包分析示例
1、Wireshark的抓包开启Wireshark的抓包功能后,通过电脑连接到本地搭建的回显服务器,电脑上面的客户端发送了一段数据到服务器,服务器回传到电脑上的客户端。
2、过滤报文此时我们在Wireshark的过滤栏中输入“ip.addr == 192.168.3.6”就能过滤出网络报文中基于IP协议簇,且IP地址(源地址或目标地址)为192.168.3.6的网络报文。如下图所示:
Wireshark在封包展示界面中根据网络协议模型,展示出了各层协议的重要信息如下图所示:Frame:表示物理层Ethernet II:数据链路层信息,包括源主机MAC,目标主机MAC与协议类型如IPV4(0x0800)Internet Protocol Version 4:IP协议帧信息,包括源主机IP地址,目标主机IP地址等Transmission Control Protocol:TCP协议相关信息,包括源端口与目标端口号,接收窗口大小等
3、TCP握手过程
Wireshark常用过滤器设置
1、Wireshark中的逻辑运算符1.1 比较运算符如:== (等于)、!=(不等于) 、>(大于) 、<(小于) 、>=(大于等于) 、<=(小于等于)ip.src == 192.168.3.6 过滤源主机IP地址或者目标主机IP地址为192.168.3.6的报文1.2 逻辑运算符如:&&(与)、||(或)、!(非)ip.src == 192.168.3.6 && && tcp.srcport == 8001,则只显示报文源主机地址为192.168.3.6且源端口为为8001的报文
2、协议过滤 根据网络协议过滤报文,即在抓包过滤框中输入协议相关字段即可,包括”TCP”,”UDP””HTTP””ICMP”等。
3、MAC地址过滤eth.addr == 38:3b:26:88:02:dd 过滤源主机MAC地址或者目标主机MAC地址为38:3b:26:88:02:dd的报文eth.src== 38:3b:26:88:02:dd 过滤源主机MAC地址为38:3b:26:88:02:dd的报文eth.dst== 38:3b:26:88:02:dd 过滤目标主机MAC地址为38:3b:26:88:02:dd的报文
4、ip地址过滤Ip.addr == 192.168.3.6 过滤源主机IP地址或者目标主机IP地址为192.168.3.6的报文Ip.src== 192.168.3.6 过滤源主机IP地址为192.168.3.6的报文ip.dst == 192.168.3.240 过滤目标主机IP地址为192.168.3.240的报文
5、端口过滤tcp.port==80 过滤基于TCP协议且目标端口号或源端口号为80的报文udp.srcport == 8001 过滤基于UDP协议且端口号为8001的报文tcp.dstport == 8001 过滤基于TCP协议且目标端口号为8001的报文
6、http模式过滤http.request.method=="GET", 过滤基于http协议且http请求方式为”GET”的报文