Wireshark 过滤规则

时间:2023-02-09 18:59:12

Wireshark有两种用途的过滤器,分别是捕捉过滤器和显示过滤器。

使用捕捉过滤器时,只会捕捉相关的数据,其他数据不予抓取;使用显示过滤器时,会捕捉所有的数据,但只呈现相关内容的数据。

实际上,不同版本的语法规则稍有不同,可以在使用时配合关键字提醒来自定义规则。


捕捉过滤器

基本语法:Protocol Direction Host(s) Value Logical Operations Other expression

[示例]

tcp dst 10.1.1.1 80 and tcp dst 10.2.2.2 3128


【Protocol(协议)】

可选值: ether、fddi、ip、arp、rarp、decnet、lat、sca、moprc、mopdl、tcp and udp。

如果没有特别指明是什么协议,则默认使用所有支持的协议。


【Direction(方向】

可选值: src、dst、src and dst、src or dst。

如果没有特别指明来源或目的地,则默认使用“src or dst”作为关键字。

[示例]

“host 10.2.2.2”与“src or dst host 10.2.2.2”是一样的。


【Host(s)】

可选值: net、port、host、portrange。

如果没有指定此值,则默认使用“host”关键字。

[示例]

“src 10.1.1.1”与“src host 10.1.1.1”效果相同。


【Logical Operations(逻辑运算)】

可选值: not、and、or。

“not”具有最高的优先级,“or”与“and”具有相同的优先级,运算时从左至右进行。

[示例]

“not tcp port 3128 and tcp port 23”与“(not tcp port 3128) and tcp port 23”效果相同。

“not tcp port 3128 and tcp port 23”与“not (tcp port 3128 and tcp port 23)”效果不同。


[示例]

tcp dst port 3128

//显示目的 TCP 端口为 3128 的封包。


ip src host 10.1.1.1

//显示来源 IP 地址为 10.1.1.1 的封包。


host 10.1.2.3

//显示目的或来源IP地址为 10.1.2.3 的封包。


src portrange 2000-2500

//显示来源为UDP或TCP,并且端口号在 2000 至 2500 范围内的封包。


not imcp

//显示除了icmp以外的所有封包。( icmp 通常被 ping 工具使用)


src host 10.7.2.12 and not dst net 10.200.0.0/16

//显示来源 IP 地址为 10.7.2.12,但目的地不是 10.200.0.0/16 的封包。


(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8

//显示来源IP为10.4.1.12或者来源网络为10.6.0.0/16,目的地TCP端口号在200至10000之间,并且目的位于网络10.0.0.0/8内的所有封包。


src net 192.168.0.0/24

src net 192.168.0.0 mask 255.255.255.0

//显示来源IP地址为10.1.1.1的封包。


【注意事项】

1. 当使用关键字作为值时,需使用反斜杠“\”。

“ether proto \ip”(与关键字“ip”相同),这样写将会以IP协议作为目标。

“ip proto \icmp” (与关键字“icmp”相同),这样写将会以ping工具常用的icmp作为目标。

可以在“ip”或“ether”后面使用“multicast”及“broadcast”关键字,当您想排除广播请求时,“no broadcast”就会非常有用。

2. 您可以使用大量位于OSI模型第2至7层的协议。点击“Expression(表达)”按钮后,您可以看到它们。

3. 点击相关父类旁的“+”号,然后选择其子类。

4. 可以使用 6 种比较运算符:

英文写法 C语言写法 含义

 eq  ==   等于

 ne  !=   不等于

 gt  >   大于

 gt  <   小于

 ge  >=   大于等于

 le  <=   小于等于

5. Logical expressions(逻辑运算符)

英文写法 C语言写法 含义

 and &&   逻辑与

 or  ||   逻辑或

 xor  ^^   逻辑异或

 not  !   逻辑非


显示过滤器

基本语法:Protocol . String 1 . String 2 Comparison operator Value Logical Operations Other

expression

[示例]

ftp passive ip == 10.2.3.4 xor icmp.type

[示例]

snmp || dns || icmp

//显示SNMP或DNS或ICMP封包。


ip.addr == 10.1.1.1

//显示来源或目的IP地址为 10.1.1.1 的封包。


ip.src != 10.1.2.3 or ip.dst != 10.4.5.6

//显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。


ip.src != 10.1.2.3 and ip.dst != 10.4.5.6

//显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。


tcp.port == 25

//显示来源或目的TCP端口号为25的封包。


tcp.dstport == 25

//显示目的TCP端口号为25的封包。


tcp.flags

//显示包含TCP标志的封包。


tcp.flags.syn == 0×02

//显示包含TCP SYN标志的封包。