Wireshark使用

过滤规则

显示过滤器

  • 根据协议来进行包过滤:eth, ip, tcp, http, telnet等

  • 根据包格式中的域值来进行包过滤

    • 例:显示以太网地址为 00:d0:f8:00:00:03 的设备的所有帧 eth.addr==00.d0.f8.00.00.03
    • 例:显示 IP地址为 192.168.10.1 的主机的所有报文
      ip.addr==192.168.10.1
    • 例:显示所有 Web 浏览的报文
      tcp.port==80
  • 运算符

    • 关系运算符:==, >, <=, != 等
    • 逻辑连接符:&&, ||, ! 等
    • 还可以用 ( ) 来指定运算顺序
    • 例:显示192.168.10.1除了http外的所有报文
      ip.addr==192.168.10.1 && tcp.port!=80

wireshark支持的全部协议及协议字段可查看https://www.wireshark.org/docs/dfref/

捕获过滤器

  • 过滤规则共有两种形式:

    • 一个原语(Primitive);

    • 用 ”and”, “or”, “not” 关系运算符,以及括号”()”将原语组合起来而构成的表达式;

ether  [src|dst]  host  <mac_addr>
- 捕获所有源或目的MAC地址是 ”08:00:1B:D3:D3:61”的以太网帧
     ether  host  08:00:1B:D3:D3:61
- 捕获所有源MAC地址是 ”08:00:1B:D3:D3:61”的以太网帧
	ether  src  host  08:00:1B:D3:D3:61

[src|dst]  host  <ip_addr>
- 捕获所有源或目的IP地址是 ”210.30.97.53”的报文
      host  210.30.97.53
- 捕获所有目的IP地址是 ”210.30.97.53”的报文
      dst  host  210.30.97.53

[tcp|udp]  [src|dst]  port  <number> 
捕获所有源或目的端口号是80的TCP协议的包 
      tcp port 80
捕获所有目的端口号是53的UDP协议的包 
      udp dst port 53

arp | ip | icmp | udp | tcp  等
捕获所有ICMP协议的包 
      icmp 
捕获所有ARP协议的包 
      arp 

例1:捕获主机 192.168.0.10 发出或收到的,除HTTP协议之外的所有网络包
      host  192.168.0.10  and  not  tcp  port  80 
 注:HTTP协议通常使用TCP 端口号 80。

例2:记主机 192.168.0.10为 A,捕获 A 与主机 192.168.0.20 或 A 与主机 192.168.0.30 之间的网络包
 host 192.168.0.10 and (host 192.168.0.20 or host 
 192.168.0.30 )

区别

  • 显示过滤器是将全部报文不过根据对应过滤规则筛选 , 捕获过滤器是在捕获时 , 只捕获符合过滤规则的报文
  • 显示过滤器优点是无需甄别 , 但是占用存储
  • 捕获过滤器长时间捕获 , 占用存储容量小 , 但是甄别时有性能开销 , 可能会导致丢包 , 两个过滤器语法不通用