Skip to content

wireshark 过滤器

Wireshark 过滤器分为两种,捕获过滤器与显示过滤器。

  • 捕获过滤器:当进行数据包捕获时,只有那些满足给定的包含/排除表达式的数据包会被捕获。

  • 显示过滤器:该过滤器根据指定的表达式用于一个已捕获的数据包集合,它将隐藏不想显示的数据包,或者只显示那些需要的数据包。

捕获过滤器(capture filter)


捕获过滤器可减少抓取文件体积,使用 BPF(Berkeley packet filter) 语法。tcpdump 也同样支持 BPF 语法。

BPF 语法:使用 BPF 语法创建的过滤器被称为 expression(表达式),并且每个表达式包含一个或多个primitives(原语)。每个原语包含一个或多个qualifiers(限定词),然后跟着一个ID 名字或者数字

  • BPF 限定词
限定词说明例子
Type指出名字或数字所代表的意义host、net、port
Direction指明传输方向是前往还是来自名字或数字src、dst
Proto限定所要匹配的协议Ether、ip、tcp、udp、http、ftp
  • 表达式结构(expression) wireshark_capture_filter_expression

  • 表达式(expression):由多个原语(primitive)组成。

  • type

    • host:双向主机
    • port:双向端口
    • net:子网 net 192.168.0.0/24
    • portrange:端口范围

    wireshark_capture_filter

  • 原语运算符

    • 与:"&&" 或者 "and"

      src host 192.168.0.10 && port 80
    • 或:"||" 或者 "or"

    • 非:"!" 或者 "not"

  • BPF 语法参考

    • 捕获 tcp 协议 源/目的端口范围:tcp and src or dst portrange 6000-8000

    • length > 100 数据包:tcp and src or dst portrange 80-4000 and greater 100

  • tcpdump BPF 语法参考

    • 抓取端口范围:tcpdump -i ens38 'tcp and src or dst portrange 6000-8000'

    • 大文件中筛选:tcpdump -r packets.pcap 'tcp dst port 80' -w http.pcap

    • 指定语法文件:

      root@server:~# cat portrange.bpf 
      tcp and src or dst portrange 6000-8000
      root@server:~# tcpdump -i ens33 -F portrange.bpf

捕获过滤器高级用法


BPF 语法可以通过检查协议头中的每一个字节来创建基于那些数据的特殊过滤器

  • 字节转换:

    • 1byte == 2 个 16 进制数

    • 1byte == 8 个 bit

      二进制:0 	0 	0 	0 	0 	0 	0	0
      十进制:128 64  32  16	8	4	2	1
  • 通过偏移值定义过滤器

    • 格式:协议[字节位置] == value
  • 示例1:过滤 icmp echo 报文,即协议第1个字节

    # icmp 协议第一个字节 == 8 即 echo 报文
    icmp[0]==8

    wireshark_icmpwireshark_icmp_type8

  • 示例2:过滤 tcp reset 报文

    # tcp 包头第 13 个 byte 是 flag 字段,reset 置位时十进制数 == 4(0100)。
    tcp[13]&4==4

    wireshark_tcp_reset

  • 常用捕获过滤器

过滤器说明
tcp[13]&32==32设置了URG 位的TCP 数据包
tcp[13]&16==16设置了ACK 位的TCP 数据包
tcp[13]&8==8设置了PSH 位的TCP 数据包
tcp[13]&4==4设置了RST 位的TCP 数据包
tcp[13]&2==2设置了SYN 位的TCP 数据包
tcp[13]&1==1设置了FIN 位的TCP 数据包
tcp[13]==18TCP SYN-ACK 数据包
ether host 00:00:00:00:00:00流入或流出你MAC 地址的流量
!ether host 00:00:00:00:00:00不流入或流出你MAC 地址的流量
broadcast仅广播流量
icmpICMP 流量
icmp[0:2]ICMP 目标不可达、主机不可达
ip仅IPv4 流量
ip6仅IPv6 流量
udp仅UDP 流量

显示过滤器(display filter)


显示过滤器更为强大,数据包详情的每个字段都可以作为筛选条件

  • 常用显示过滤器
过滤器说明
!tcp.port==3389排除RDP 流量
tcp.flags.syn==1具有SYN 标志位的TCP 数据包
tcp.flags.rst==1具有RST 标志位的TCP 数据包
!arp排除ARP 流量
http所有HTTP 流量
tcp.port==23文本管理流量(Telnet 或FTP)
  • 一招打天下

    wireshark_dispaly_filter

  • 保存显示过滤器(如有特别常用且复杂的显示过滤器,可以加 label保存)

wireshark_display_filter_button