目录
- 一、什么是Wireshark?
- 二、Wireshark下载
- 三、Wireshark安装
- 四、Wireshark使用
- 4.1 基本使用
- 4.2 过滤设置
- 1)捕获过滤器
- 2)显示过滤器
- 4.3 过滤规则
- 1)捕获过滤器-规则语法
- 2)显示过滤器-规则语法
- 4.4 常用的显示过滤器规则
- 五、Wireshark快捷键
一、什么是Wireshark?
Wireshark
是一款广泛使用、免费开源的 网络封包分析软件。其主要功能是 捕获和显示网络数据包的详细信息,以便进行深入的 网络分析 和 故障排查。
wire:导线。shark:鲨鱼。可以理解为游行于导线,吞噬数据的鲨鱼。
Wireshark 作用于 OSI 七层协议的传输层
,通过 WinPCAP
接口与网卡直接交换数据报文,从而能够截取各种网络封包,并尽可能详细地显示这些封包的内容。这使得 Wireshark 在网络封包和流量分析领域具有强大的功能,深受各种网络工程师和网络分析师的喜爱。
补充: 即使强大如 Wireshark 也无法抓取到本地ip、localhost、127.0.01这类回环地址的请求,需要依赖其它插件才能实现。
二、Wireshark下载
- 下载地址: https://www.wireshark.org/
进入首页,点击 Download Wireshark Now
。
可以根据自己的操作系统下载不同的版本。
下载后如下所示:
三、Wireshark安装
双击打开,一直 Next
。(其中有一步需要勾选是否在桌面展示,建议勾选)
注意,Wireshark 底层依赖了 WinPCAP
,当安装进行到下面这一步的时候会卡住。
然后这时会有一个 Npcap
的安装界面弹出来,我们需要先完成 Npcap 的安装,Wireshark的安装进度条才会继续走。
最终 Wireshark 安装完毕,点击 Finish
即可。
安装后,可以看到桌面上图标如下:(安装时勾选了桌面图标才会显示)
四、Wireshark使用
4.1 基本使用
双击图标启动之后,首先要选择网卡,曲线代表网卡的流量波动,选择后 双击网卡开始监控:
双击网卡进入后便自动开始捕获网络请求,如下所示:
其中,数据详情区每行的内容如下:
Frame
:物理层的数据帧概况。Ethernet II
:数据链路层以太网帧头部信息。Internet Protocol Version 4
:互联网层IP包头部信息。Transmission Control Protocol
:传输层T的数据段头部信息,此处是TCP。Hypertext Transfer Protocol
:应用层的信息,此处是 HTTP 协议。
其中第4行的传输层包含了TCP的报文信息:
4.2 过滤设置
初学者使用 Wireshark 时,将会得到 大量的冗余数据包列表,以至于很难找到自己想要抓取的部分。这里我们对 Wireshark 的过滤功能进行介绍。
Wireshark 中自带了两种过滤器:
- 捕获过滤器: 在抓包之前就进行过滤,只捕获目标数据。
- 显示过滤器: 依然抓取所有数据包,但是显示的时候只显示目标数据。
1)捕获过滤器
点击 捕获
-> 捕获过滤器
,在抓包前设置,只抓取目标数据。
里面自带了很多常用的过滤器,可以直接使用。
也可以新建自己的捕获过滤器,点击左下角的 +
,创建一个新的过滤器。
创建好后,双击编辑名称和规则。下面这段规则表示:只筛选源ip为192.168.1.15的数据。
src host 192.168.1.15
创建好捕获过滤器之后,并不会自动生效,有两种方式去选择使用哪种捕获过滤器:
- 第1种方式:点击工具栏的齿轮按钮⚙可以进行选择。
点击左侧的绿色按钮就可以看到刚才新创建的捕获过滤器了,这里也可以直接输入捕获过滤器的规则,不过常用的规则还是建议去手动创建下。选择后点击开始
即可按照制定好的规则进行抓包。
可以看到,过滤规则成功生效,新捕获的内容全部都是以 192.168.1.15 作为源IP的请求数据。
- 第2种方式:我们可以在双击 Wireshark 图标一进来的界面进行选择。
如果是已经进入捕获页面了,可以点击工具栏的 关闭捕获文件
,返回选择网卡的界面。
2)显示过滤器
显示过滤器
是用于 在抓取数据包后根据设置好的过滤条件进行过滤。可以直接在上方的搜索栏编辑规则,回车生效。
下面这段规则表示:只筛选源ip为192.168.1.15的数据。
ip.src == 192.168.1.15
4.3 过滤规则
根据上面的示例,假如我想实现 只筛选源ip为192.168.1.15的数据
,两种过滤器的写法如下:
- 捕获过滤器: src host 192.168.1.15
- 显示过滤器: ip.src == 192.168.1.15
可以看出来,捕获过滤器、显示过滤器的规则语法是不一样的。这里我们就分别来总结一下常用的过滤规则有哪些。
1)捕获过滤器-规则语法
捕获过滤器采用的是 BPF(Berkeley Packet Filter)
语法,这是一种用于过滤数据包的表达式,广泛应用于各种抓包工具中。
在 BPF
语法中,过滤表达式的基本单位是 原语
。相关的规则如下:
原语
通常由多个限定符
(如:dir方向、type类型、proto协议)和一个过滤值
(如:192.168.1.1、80、443)组成。
限定符的类型和常用值如下:
dir(方向)
:
- src: 过滤 请求源 中包含该内容的数据。
- dst: 过滤 请求目标 中包含该内容的数据。
- src or dst: 过滤 请求源 或者 请求目标 中包含该内容的数据。
- src and dst: 过滤 请求源 并且 请求目标 都包含该内容的数据。(默认)
type(类型)
:
- host: 根据 IP 进行过滤,可以是 ipv4、ipv6。(不支持直接使用域名,域名的话需要先解析为ip再进行筛选)
- net: 根据 网段 进行过滤,支持net(网关,例:192.168.1)、mask(掩码,例:255.255.255.0)、CIDR(路由,例:192.168.1.0/24)三种形式。
- port: 根据 端口 进行过滤(例:80、443等)。
- portrange: 根据 端口范围 进行过滤(例:1-100)。
proto(协议)
:(默认不筛选协议类型。)
语法: 可以使用
ether proto
+协议
,也可以直接使用如下协议。
ip
、ip6
、arp
、tcp
、udp
。(其中 ip 指的是 IPv4 协议)- 不常用协议:ddi、 wlan、arprarp、decnet、 lat、 sca、 moproc、 mopdl。
- 一个表达式中可以包含多个原语,原语之间使用
逻辑运算符
进行拼接。
(注意:这里的逻辑运算符 &&
、||
、!
不能用 and
、or
、not
替代。)
2)显示过滤器-规则语法
IP地址过滤:
ip.addr
:过滤 请求 中包含该IP地址的数据。ip.src
:过滤 请求源地址 为该IP地址的数据。ip.dst
:过滤 请求目标地址 为该IP地址的数据。
协议过滤:
tcp
、ip
、icmp
、arp
、http
、dns
、bootp(dhcp)
等。
端口过滤:
<协议>.port
:过滤特定端口。<协议>.srcport
:过滤特定源端口。<协议>.dstport
:过滤特定目的端口。<协议>.flags.sync
:过滤SYN标志。<协议>.flags.ack
:过滤ACK标志。- ……
比较操作符:
==
、!=
、>
、<
、>=
、<=
逻辑操作符:
eq
和==
表示等于。ne
和!=
表示不等于。and
和&&
表示逻辑与。or
和||
表示逻辑或。not
和!
表示逻辑非。
4.4 常用的显示过滤器规则
- 地址过滤: 过滤特定源地址或目的地址的数据包。例如:
- 筛选目的地址为 192.168.1.164 的HTTP请求:http && ip.dst == 192.168.1.164
http
只能过滤 HTTP 请求,如果是HTTPS请求需要使用tls
过滤 TLS 协议的请求。但是过滤只有也 只能看到加密后的 TCP 请求信息,如果需要查看明文信息,则 需要在电脑安装wireshark的证书信息 才行。
- 过滤TPC协议的80端口:tcp.port == 80
- 过滤UDP协议的53端口:udp.port == 53
- 过滤GET请求:http.request.method == “GET”
- 过滤状态码为200的请求:http.response.status == 200
- 筛选uri中包含"findById"的HTTP请求:http.request.uri contains “findById”
- 使用逻辑运算符(如
and
、or
)组合多个过滤条件:ip.src == 192.168.1.107 and tcp.port == 80
通过这些常用显示过滤器规则,用户可以有效地从捕获的数据包中筛选出感兴趣的信息,从而提高分析效率和准确性。
五、Wireshark快捷键
- Ctrl + E 开始/停止捕获。
- Ctrl + R 重新开始捕获。
- Ctrl + W 关闭捕获文件。
- Ctrl + / 焦点定位到显示过滤器。
- Ctrl + Alt + Shift + T 追踪TCP数据流。
- Ctrl + Alt + Shift + H 追踪HTTP数据流。
- Ctrl + Alt + Shift + S 追踪TLS数据流。
- Ctrl + ← 合并所有数据详细区内容。
- Ctrl + → 展开所有数据详细区内容。
- Ctrl + F 搜索。
整理完毕,完结撒花~🌻
参考地址:
1.网络分析工具——WireShark的使用(超详细),https://blog.csdn.net/zzwwhhpp/article/details/113077747