WireShark是一个网络包分析工具。该工具主要用来捕获网络数据包,并自动解析网络数据包,为用户显示数据包详细信息,供用户对数据包进行分析
网络管理员 使用WireShark来检查网络问题
网络安全工程师 使用WireShark来检查咨询安全相关问题
开发人员 使用WireShark来为新的通讯协议出错
普通使用者 使用WireShark 来学习网络协议的相关知识
常见协议包抓取
-
ARP协议
-
ICMP 协议
-
TCP 协议
-
UDP协议
-
DNS协议
-
HTTP协议
Wireshark 的主界面包含6个部分:
-
菜单栏:用于调试、配置
-
工具栏:常用功能的快捷方式
-
过滤栏:指定过滤条件,过滤数据包
-
数据包列表:核心区域,每一行就是一个数据包
-
数据包详情:数据包的详细数据
-
数据包字节:数据包对应的字节流,二进制
WireShark过滤器使用
这里可以过滤掉我们不关心的数据
过滤器是Wireshark的核心功能,也是我们平时使用最多的一个功能。
Wireshark提供了两个过滤器
抓包过滤器:重点在动作,需要的包我才抓,不需要的我就不抓。
显示过滤器:重点在数据的展示,包已经抓了,只是不显示出来。
1. 抓包过滤器
捕获过滤器的菜单栏路径为【捕获】-> 【捕获过滤器】。用于在抓取数据包前设置。
案例 1: 抓包过滤器
假设您只对特定目标主机(IP地址为 192.168.1.100)发送或接收的数据包感兴趣。您可以在抓包过滤器中设置以下过滤条件:
-
host 192.168.1.100
2. 显示过滤器
显示过滤器是用于在抓取数据包后设置过滤条件进行过滤数据包。通常是在抓取数据包时设置条件相对宽泛,抓取的数据包内容较多时使用显示过滤器设置条件过滤以方便分析。
比如我们在过滤栏输入http,意思仅展示Protoco为http的数据
使用逻辑运算符组合多个过滤条件
逻辑运算符的使用方法:
-
AND 运算符(&&):
-
使用 AND 运算符可以同时满足多个条件。
-
例如,如果您希望过滤显示源IP为 192.168.1.100 并且目标IP为 192.168.1.200 的数据包,可以这样设置过滤条件:
ip.src == 192.168.1.100 && ip.dst == 192.168.1.200
-
-
OR 运算符(||):
-
使用 OR 运算符可以满足多个条件中的任意一个。
-
例如,如果您想要显示源IP为 192.168.1.100 或目标IP为 192.168.1.200 的数据包,可以这样设置过滤条件:
ip.src == 192.168.1.100 || ip.dst == 192.168.1.200
-
-
NOT 运算符(!):
-
使用 NOT 运算符可以排除特定条件。
-
例如,如果您想要显示除了源IP为 192.168.1.100 以外的数据包,可以这样设置过滤条件:
!ip.src == 192.168.1.100
-
在Wireshark的界面中,数据包列表、数据包详情和数据包字节是用户用来分析网络数据包时经常会查看的重要区域。以下是对这三个区域的详细解释:
数据包列表(核心区域):
-
核心区域:数据包列表是Wireshark主界面的核心区域,通常显示在界面的中间部分。
-
每一行是一个数据包:每一行代表捕获到的一个数据包,Wireshark会按照捕获的顺序依次显示数据包,通常从上到下排列。
-
列信息:数据包列表中通常包含有关每个数据包的信息,如数据包编号、时间戳、源IP地址、目标IP地址、协议类型等。
-
选择数据包:用户可以单击列表中的某一行以选择特定的数据包,查看其详细信息和字节流。
数据包详情:
-
数据包的详细数据:当用户在数据包列表中选择一个数据包时,相应的数据包详情将显示在Wireshark的另一个区域中。
-
详细信息:数据包详情通常会提供有关所选数据包的更详细的信息,包括协议分层结构、协议字段值、数据包中的数据内容等。
-
解析数据:Wireshark会尝试解析数据包中的各个协议,以便用户更容易地理解每个数据包的含义和内容。
数据包字节:
-
数据包对应的字节流:在Wireshark中,用户可以查看数据包的原始字节流,以便深入分析数据包的内容。
-
二进制形式呈现:数据包字节通常以十六进制或二进制形式呈现,显示数据包中每个字节的数值。
-
分析数据包内容:通过查看数据包的字节流,用户可以了解数据包的实际传输内容,包括报头、有效载荷和其他相关信息。
-
十六进制和 ASCII 视图:Wireshark通常提供十六进制和ASCII视图,使用户可以同时查看数据包的二进制表示和对应的可读文本表示。