Wireshark显示过滤器常用关键字及过滤表达式

1. 过滤器类型

Wireshark抓包工具提供了两种类型过滤器:抓包过滤器 和 显示过滤器。

  • 抓包过滤器: 抓取满足过滤条件的数据包,不满足过滤条件的数据包不会被抓取。
  • 显示过滤器: 包已经被抓取到,显示只满足过滤条件的数据包,不满足过滤条件的数据包在后台。

①. 抓包过滤器

Wireshark抓包工具在抓包过滤时,其过滤语法格式为BPF 格式。

BPF(全称为Berkeley Packet Filter),翻译过来就是 “伯克利封包过滤器”(或者也称 “柏克莱封包过滤器” )。

抓包过滤器语法包含四个核心元素:类型、方向、协议 和 逻辑运算符。

  • 类型Type: 主机(host)、 网段(net)、 端口(port);
  • 方向Dir: 源地址(src)、 目标地址(dst);
  • 协议Protocol: 各种网络协议,比如:tcpudphttp
  • 逻辑运算符: 与( && )、或( || )、非( !) ;

四个元素可以自由组合。

②. 显示过滤器

显示过滤器在抓包后或者抓包过程中使用。

显示过滤器的语法包含五个核心元素:IP、端口、协议、比较运算符和逻辑运算符。

  • IP地址:ip.addrip.srcip.dst
  • 端口:tcp.porttcp.srcporttcp.dstportudp.port
  • 协议: arpipicmptcpudphttpntpftpftp-datasnmpdnsdhcpmodbusmysql;
  • 比较运算符:><==>=<=!= ;
  • 逻辑运算符:andornotxor&&|| 等;

五个元素可以自由组合。

显示过滤器还可以使用 “frame[]” 和 ”data[]“ 定位帧指定位置内容。

  • **frame[]:**全域中定位数据(匹配数据);
  • data[]: 数据域中定位数据(匹配数据);

alt text

alt text

2. 常用显示过滤器关键字及其表达式

[1]. IP地址过滤

目标地址过滤

1
ip.dst == 10.46.21.11

源地址过滤

1
ip.src == 10.56.1.31

[2]. 端口过滤

UDP 端口过滤

1
udp.port == 50001

UDP 目标端口过滤

1
udp.dstport == 4000

UDP 源端口过滤

1
udp.srcport == 50001

TCP 端口过滤

1
tcp.port == 2048

TCP 目标端口过滤

1
tcp.dstport == 512

TCP 源端口过滤

1
tcp.srcport == 501

[3]. 常用协议过滤

ICMP 协议过滤

1
icmp

UDP 协议过滤

1
udp

TCP 协议过滤

1
tcp

MYSQL 协议过滤

1
mysql

HTTP 协议过滤

1
http 

[4]. Modbus协议过滤

Modbus 协议过滤

1
modbus.func_code==0x03

alt text

[5]. MySQL协议过滤

MySQL 协议过滤

1
mysql

alt text

[6]. IEC60870-104协议过滤

IEC60870-104 协议过滤

1
2
3
104apci     应用规约控制信息帧

104asdu 应用服务数据单元帧

alt text

[7]. 多条件组合过滤

多个条件组合过滤

比如,过滤应用层协议类型为TCP ,目标端口为512,源地址为192.168.58.151 的数据帧,过滤表达式如下:

1
tcp and tcp.dstport==512 and ip.src==192.168.58.151

alt text

[8]. frame[] 全域过滤

A. 单个字节匹配过滤
单个字节数据域匹配过滤

1
frame[2] == 5e

alt text

B. 多个连续字节匹配过滤
多个连续字节数据域匹配过滤(比如 frame[0:6]: 表示从第0个索引位置开始,匹配连续6个字节 )

1
frame[0:6] == ff:ff:ff:ff:ff:ff

alt text

C. 多个不连续字节匹配过滤
多个不连续字节数据域匹配过滤(比如 frame[0,7,8,11]: 表示匹配索引位置 0,7,8、11 共四个数据内容)

1
frame[0,7,8,11] == ff:50:56:08

alt text

[9]. data[] 数据域过滤

A. 单个字节匹配过滤
单个字节数据域匹配过滤

1
data[0] == 90

alt text
B. 多个连续字节匹配过滤
多个连续字节数据域匹配过滤(比如 data[0:4]: 表示从第0个索引位置开始,匹配连续四个字节 )

1
data[0:4] == 90:eb:03:03

alt text

C. 多个不连续字节匹配过滤
多个不连续字节数据域匹配过滤(比如 data[0,1,6]: 表示匹配索引位置 0,1,6 共三个数据内容)

1
data[0,1,6] == 90:eb:a7

alt text

参考文献或转载相关: