Wireshark过滤基础语法简析

1.简介

Wireshark是一款强大的网络分析工具,它可以捕获和显示网络上的数据包,并提供多种过滤功能,让用户可以快速地找到自己感兴趣的数据包。 

Wireshark的过滤功能分为两种:捕获过滤和显示过滤。

  • 捕获过滤是在数据包进入Wireshark之前就对其进行筛选,只保留符合条件的数据包,从而减少捕获的数据量。
  • 显示过滤是在数据包已经进入Wireshark之后,对其进行再次筛选,只显示符合条件的数据包,从而方便用户分析。 

Wireshark的过滤语法有两种:BPF语法和Wireshark语法。

  • BPF语法是一种通用的数据包过滤语言,它可以用于多种网络分析工具,如tcpdump、libpcap等。
  • Wireshark语法是一种专门为Wireshark设计的过滤语言,它可以利用Wireshark的协议解析能力,对数据包的各个层次和字段进行过滤。 

本文是Wireshark部分的第一节,介绍两种过滤语法的基本写法。

2.BPF语法 

BPF语法的基本格式是: 

代码语言:python
代码运行次数:0
复制
Cloud Studio 代码运行
类型 方向 协议 地址 端口 

其中,

  • 类型-表示数据包的类型,可以是host、net、port、portrange等;
  • 方向-表示数据包的方向,可以是src、dst、src and dst、src or dst等;
  • 协议-表示数据包的协议,可以是ip、tcp、udp、icmp等;
  • 地址-表示数据包的主机地址,可以是IP地址或域名;
  • 端口-表示数据包的端口号,可以是数字或服务名。 

BPF语法的一些示例如下: 

  • host 192.168.1.1:过滤所有与192.168.1.1相关的数据包,无论是源地址还是目的地址。 
  • tcp port 80:过滤所有使用TCP协议并且端口号为80的数据包,无论是源端口还是目的端口。 
  • ip src 10.0.0.1 and udp dst port 53:过滤所有使用IP协议,源地址为10.0.0.1,目的端口为53的UDP数据包。 
  • net 172.16.0.0/16:过滤所有属于172.16.0.0/16网段的数据包。 

3.Wireshark语法 

Wireshark语法的基本格式是: 

代码语言:python
代码运行次数:0
复制
Cloud Studio 代码运行
字段 运算符 值 

字段-表示数据包的字段,可以是协议名、字段名或别名;

运算符-表示比较运算符,可以是\==、!=、>、<、>=、<=、contains、matches等;

值-表示字段的值,可以是数字、字符串、布尔值等。 

Wireshark基础语法的一些示例如下: 

  • ip.addr == 192.168.1.1:过滤所有IP地址等于192.168.1.1的数据包,无论是源地址还是目的地址。 
  • tcp.port == 80:过滤所有TCP端口等于80的数据包,无论是源端口还是目的端口。 
  • udp.srcport == 53 and dns.flags.response == 0:过滤所有源端口为53,且DNS标志位为请求的UDP数据包。 
  • http.request.method == "GET":过滤所有HTTP请求方法为GET的数据包。 
  • ssl.handshake.type == 1:过滤所有SSL握手类型为Client Hello的数据包。 
  • ip.addr matches "10\.0\.\d+\.\d+":过滤所有IP地址符合正则表达式10.0.\d+.\d+的数据包。