接着上篇:wireshark 捕捉过滤器基本法说说显示过滤器的用法

显示过滤器语法

wireshark_display_syntax

  • Protocol(协议)
    使用大量位于OSI模型第2至7层的协议。比如:IP,TCP,DNS,SSH

  • String1, String2 (可选项)
    协议的子类。

  • Comparison operators (比较运算符)

英文写法 C语言写法 含义
eq == 等于
ne != 不等于
gt > 大于
lt < 小于
ge >= 大于等于
le <= 小于等于
  • Logical expressions(逻辑运算符)
英文写法 C语言写法 含义
and && 逻辑与
or || 逻辑或
xor ^^ 逻辑异或
not ! 逻辑非

例子

针对ip的过滤

  • ip.src == 192.168.0.1对源地址进行过滤
  • ip.dst == 192.168.0.1对目的地址进行过滤
  • ip.addr == 192.168.0.1对源地址或者目的地址进行过滤
  • !(ip.addr == 192.168.0.1)如果想排除以上的数据包,只需要将其用括号囊括,然后使用 “!” 即可

针对协议的过滤

  • http获取http协议的数据包

  • http or telnet获取http或者telnet协议的数据包

  • not arp或者!tcp排除某种协议的数据包

  • 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并且目的不为10.4.5.6的封包。

  • tcp.port == 25 显示来源或目的TCP端口号为25的封包。

  • tcp.dstport == 25 显示目的TCP端口号为25的封包。

  • tcp.flags 显示包含TCP标志的封包。

  • tcp.flags.syn == 0x02显示包含TCP SYN标志的封包。

针对端口的过滤(视传输协议而定)

  • tcp.port == 80捕获80端口的TCP数据包。
  • udp.port >= 2048捕获大于或等于2048端口的UDP数据包。

针对长度和内容的过滤

  • udp.length < 20http.content_length <=30针对数据段长度进行过滤

针对http请求的一些过滤实例。

  • http.request.uri matches "user" 针对uri 内容的过滤(请求的uri中包含“user”关键字的),注意:matches 后的关键字是不区分大小写的!
  • http.request.uri contains "User" (请求的uri中包含“user”关键字的),注意:contains 后的关键字是区分大小写的!
  • http.host==baidu.com精确过滤域名
  • http.host contains "baidu"模糊过滤域名
  • http.request.full_uri=="www.mydomain.com/projectname/a.html"过滤全地址(它与uri的区别是,包含host)
  • http.content_type =="text/html"过滤请求的content_type类型
  • http.request.method=="POST"过滤http请求方法
  • tcp.port==80过滤tcp协议的80端口
  • http && tcp.port==80 or tcp.port==5566过滤http请求而且端口号为80的数据包,或者tcp端口号为5566的数据包
  • http.response.code==302过滤302的http响应状态码
  • http.cookie contains "userid"过滤含有指定cookie的http数据包

参考:
https://www.shuzhiduo.com/A/1O5EZ2qrd7/#2、显示过滤器
https://markrepo.github.io/tools/2018/06/25/Wireshark/