常见的网络抓包工具-wireshark使用
Wireshark显示过滤器常用关键字及过滤表达式
1. 过滤器类型
Wireshark抓包工具提供了两种类型过滤器:抓包过滤器 和 显示过滤器。
- 抓包过滤器: 抓取满足过滤条件的数据包,不满足过滤条件的数据包不会被抓取。
- 显示过滤器: 包已经被抓取到,显示只满足过滤条件的数据包,不满足过滤条件的数据包在后台。
①. 抓包过滤器
Wireshark抓包工具在抓包过滤时,其过滤语法格式为BPF 格式。
BPF(全称为Berkeley Packet Filter),翻译过来就是 “伯克利封包过滤器”(或者也称 “柏克莱封包过滤器” )。
抓包过滤器语法包含四个核心元素:类型、方向、协议 和 逻辑运算符。
- 类型Type: 主机(
host)、 网段(net)、 端口(port); - 方向Dir: 源地址(
src)、 目标地址(dst); - 协议Protocol: 各种网络协议,比如:
tcp、udp、http; - 逻辑运算符: 与(
&&)、或(||)、非(!) ;
四个元素可以自由组合。
②. 显示过滤器
显示过滤器在抓包后或者抓包过程中使用。
显示过滤器的语法包含五个核心元素:IP、端口、协议、比较运算符和逻辑运算符。
- IP地址:
ip.addr、ip.src、ip.dst; - 端口:
tcp.port、tcp.srcport、tcp.dstport、udp.port; - 协议:
arp、ip、icmp、tcp、udp、http、ntp、ftp、ftp-data、snmp、dns、dhcp、modbus、mysql; - 比较运算符:
>、<、==、>=、<=、!=; - 逻辑运算符:
and、or、not、xor、&&、||等;
五个元素可以自由组合。
显示过滤器还可以使用 “frame[]” 和 ”data[]“ 定位帧指定位置内容。
- **frame[]:**全域中定位数据(匹配数据);
- data[]: 数据域中定位数据(匹配数据);


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 |

[5]. MySQL协议过滤
MySQL 协议过滤
1 | mysql |

[6]. IEC60870-104协议过滤
IEC60870-104 协议过滤
1 | 104apci 应用规约控制信息帧 |

[7]. 多条件组合过滤
多个条件组合过滤
比如,过滤应用层协议类型为TCP ,目标端口为512,源地址为192.168.58.151 的数据帧,过滤表达式如下:
1 | tcp and tcp.dstport==512 and ip.src==192.168.58.151 |

[8]. frame[] 全域过滤
A. 单个字节匹配过滤
单个字节数据域匹配过滤
1 | frame[2] == 5e |

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

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

[9]. data[] 数据域过滤
A. 单个字节匹配过滤
单个字节数据域匹配过滤
1 | data[0] == 90 |

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

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










