wireshark 捕获过滤器
关于捕获过滤器语法的概述可以在 用户指南 中找到。完整的参考可以在 pcap-filter(7) 手册页面 的表达式部分找到。
Wireshark 使用与 tcpdump、WinDump、Analyzer 以及任何使用 libpcap/WinPcap 库的程序相同的捕获过滤器语法。
如果需要特定协议的捕获过滤器,可以在 协议参考 中查找。
目录
捕获过滤器不是显示过滤器
捕获过滤器(如 tcp port 80)不能与显示过滤器(如 tcp.port == 80)混淆。前者功能更有限,用于减少原始数据包捕获的大小。后者用于隐藏数据包列表中的一些数据包。
捕获过滤器在开始数据包捕获之前设置,且在捕获过程中无法修改。而显示过滤器则没有此限制,可以随时更改它们。
在主窗口中,捕获过滤器位于接口列表上方和接口对话框中。显示过滤器可以在数据包列表上方更改,如下图所示:

示例
仅捕获来自或发往 IP 地址 172.18.5.4 的流量:
host 172.18.5.4
捕获来自或发往一个 IP 地址范围的流量:
net 192.168.0.0/24
或
net 192.168.0.0 mask 255.255.255.0
捕获来自一个 IP 地址范围的流量:
src net 192.168.0.0/24
或
src net 192.168.0.0 mask 255.255.255.0
捕获发往一个 IP 地址范围的流量:
dst net 192.168.0.0/24
或
dst net 192.168.0.0 mask 255.255.255.0
仅捕获 DNS(端口 53)流量:
port 53
捕获服务器上非 HTTP 和非 SMTP 的流量(两者等效):
host www.example.com and not (port 80 or port 25)
host www.example.com and not port 80 and not port 25
捕获除 ARP 和 DNS 流量之外的所有流量:
port not 53 and not arp
捕获端口范围内的流量:
(tcp[0:2] > 1500 and tcp[0:2] < 1550) or (tcp[2:2] > 1500 and tcp[2:2] < 1550)
或者,在 libpcap 的较新版本(0.9.1 及更高版本)中:
tcp portrange 1501-1549
仅捕获以太网类型 EAPOL 的流量:
ether proto 0x888e
拒绝发往链路层发现协议多播组的以太网帧:
not ether dst 01:80:c2:00:00:0e
仅捕获 IPv4 流量——这是最短的过滤器,但有时非常有用,用于排除像 ARP 和 STP 这样的低层协议:
ip
仅捕获单播流量——如果只想查看发往和来自您机器的流量,而不是例如广播和多播公告,这很有用:
not broadcast and not multicast
捕获 IPv6“所有节点”(路由器和邻居通告)流量。可用于查找流氓路由通告:
dst host ff02::1
捕获 HTTP GET 请求。此操作会在 TCP 头部之后查找字节“G”、“E”、“T”和“”(十六进制值为 47、45、54 和 20)。“tcp[12:1] & 0xf0) >> 2”用于计算 TCP 头部长度。由 Jefferson Ogata 通过 tcpdump-workers 邮件列表提供。
port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420
有用的过滤器
Blaster 和 Welchia 是 RPC 蠕虫。(是否有人有更合适的链接,例如描述或显示实际负载的链接?)
dst port 135 and tcp port 135 and ip[2:2]==48
icmp[icmptype]==icmp-echo and ip[2:2]==92 and icmp[8:4]==0xAAAAAAAA
该过滤器查找长度为 92 字节的 ICMP 回显请求,并且 ICMP 负载以 4 个 A(十六进制)开头。这是 Welchia 蠕虫在尝试入侵系统之前的一个特征。
许多蠕虫通过在端口 135、445 或 1433 上联系其他主机来传播。此过滤器与特定蠕虫无关,而是查找从本地网络发起的针对这些特定端口的 SYN 数据包。请根据您的网络修改网络过滤器。
dst port 135 or dst port 445 or dst port 1433 and tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) = 0 and src net 192.168.0.0/24
tcp src port 443 and (tcp[((tcp[12] & 0xF0) >> 4 ) * 4] = 0x18) and (tcp[((tcp[12] & 0xF0) >> 4 ) * 4 + 1] = 0x03) and (tcp[((tcp[12] & 0xF0) >> 4 ) * 4 + 2] < 0x04) and ((ip[2:2] - 4 * (ip[0] & 0x0F) - 4 * ((tcp[12] & 0xF0) >> 4) > 69))
默认捕获过滤器
Wireshark 会尝试判断是否以远程方式运行(例如通过 SSH 或远程桌面),如果是,则会设置一个默认捕获过滤器,以排除远程会话流量。它通过以下顺序检查环境变量来实现此目的:
| 环境变量 | 结果过滤器 |
|---|---|
SSH_CONNECTION |
not (tcp port srcport and addr_family host srchost and tcp port dstport and addr_family host dsthost) |
SSH_CLIENT |
not (tcp port srcport and addr_family host srchost and tcp port dstport) |
REMOTEHOST |
not addr_family host host |
DISPLAY |
not addr_family host host |
CLIENTNAME |
not tcp port 3389 |
(addr_family 将是 ip 或 ip6)
更多信息
- 捕获时的过滤 来自 Wireshark 用户指南
- 对于当前版本的 Wireshark,1.8.6,以及更早的 1.8.x 版本,捕获过滤器对话框不再出现在捕获选项窗口中。相反,您需要双击捕获选项窗口中列出的接口,以打开“编辑接口设置”窗口。在此窗口底部,您可以输入捕获过滤器字符串,或通过点击“捕获过滤器”按钮从列表中选择一个已保存的捕获过滤器。
- pcap-filter 手册页面 包含了全面的捕获过滤器参考
- Mike Horn 教程 提供了捕获过滤器的良好入门
- 捕获和显示过滤器 速查表
- packetlevel.ch 过滤器示例
参见
显示过滤器:有关显示时的过滤器信息,而不是捕获时的过滤器
讨论
顺便说一下,Symantec 页面提到 Blaster 会探测 135/tcp、4444/tcp 和 69/udp。那么,
(tcp dst port 135 or tcp dst port 4444 or udp dst port 69) and ip[2:2]==48
是否是一个更好的过滤器? - Gerald Combs
Q: 捕获 SIP 和 RTP 数据包的好过滤器是什么?
A: 在大多数系统上,对于标准 SIP 端口 5060 的 SIP 流量,
tcp port sip
应该可以捕获到该端口的 TCP 流量,
udp port sip
应该可以捕获到该端口的 UDP 流量,而
port sip
应该可以捕获到该端口的 TCP 和 UDP 流量(如果其中一个过滤器出现“解析错误”,请尝试使用 5060 替代 sip)。对于其他端口的 SIP 流量,请使用该端口号而不是 sip。
在大多数情况下,RTP 端口号是动态分配的。您可以使用类似以下的过滤器,它将捕获限制为 UDP,源端口和目的端口均为偶数,有效的 RTP 版本,以及小数据包。它可能会捕获一些非 RTP 流量(如 DNS),但在许多环境中它可以捕获所有 RTP 数据包。
udp[1] & 1 != 1 && udp[3] & 1 != 1 && udp[8] & 0x80 == 0x80 && length < 250
捕获 WLAN 流量,但不包括信标:
link[0] != 0x80
捕获来自 IP 范围 192.168.XXX.XXX 的所有流量(源):
src net 192.168
捕获 PPPoE 流量:
pppoes
pppoes and (host 192.168.0.0 and port 80)
捕获 VLAN 流量:
vlan
vlan and (host 192.168.0.0 and port 80)
从 https://wiki.wireshark.org/CaptureFilters 导入,于 2020-08-11 23:11:47 UTC

浙公网安备 33010602011771号