伯克利包过滤

伯克利包过滤中的限定符有下面的三种:

  • Type:这种限定符表示指代的对象,例如IP地址,子网或者端口等。常见的有host(用来表示主机名和IP地址), net(用来表示子网) , port(用来表示端口)。如果没有指定的话,默认为host。
  • Dir:这种限定符表示数据包传输的方向,常见的有src(源地址)和dst (目的地址)。如果没有指定的话,默认为“src or dst”。例如“192.168.1.1”就表示无论源地址或者目的地址为192.168.1.1的都使得这个语句为真。
  • Proto:这种限定符表示与数据包匹配的协议类型,常见的就是ether、ip、tcp、arp这些协议。
Proto [参数] Dir [参数] Type [参数]

eg:

下面给出了一些常见的原语实例:

  • host 192.168.1.1,当数据包的目标地址或者源地址为192.168.1.1时,过滤语句为真。
  • dst host 192.168.1.1,当数据包的目标地址为192.168.1.1时,过滤语句为真。
  • src host 192.168.1.1,当数据包的源地址为192.168.1.1时,过滤语句为真。
  • ether host 11:22:33:44:55:66,当数据包的以太网源地址或者目的地址为11:22:33:44:55:66时,过滤语句为真。
  • ether dst 11:22:33:44:55:66,当数据包的以太网目的地址为11:22:33:44:55:66过滤语句为真。
  • ether src 11:22:33:44:55:66,当数据包的以太网源地址为11:22:33:44:55:66,过滤语句为真。
  • dst net 192.168.1.0/24,当数据包的IPv4/v6的目的地址的网络号为192.168.1.0/24时,过滤语句为真。
  • src net 192.168.1.0/24,当数据包的IPv4/v6的源地址的网络号为192.168.1.0/24时,过滤语句为真。
  • net 192.168.1.0/24,当数据包的IPv4/v6的源地址或目的地址的网络号为192.168.1.0/24时,过滤语句为真。
  • dst port 8080,当数据包是tcp或者udp数据包且目的端口号为8080时,过滤语句为真。
  • src port 8080,当数据包是 tcp或者udp数据包且源端口号为8080时,过滤语句为真。
  • port 8080当数据包的源端口或者目的端口为8080时,过滤命令为真。所有的port前面都可以加上关键字tcp或者udp。

伯克利包过滤也支持到位的操作。具体的语法为proto[exprsize],这里面的proto指代协议,expr表示相对给出协议层的字节偏移量,size表示要操作的字节数。其中size的值是可选的,可以是1,2,4中的一个,默认值为1。

image-20210419162624950.png

WireShark中的捕获过滤器

捕获过滤器的配置必须要在使用WireShark进行捕获数据包之前进行,配置过程的步骤如下所示:

  1. 首先依次选择菜单栏上的“捕获”->“选项“按钮。
  2. 在“所选择接口的捕获过滤器”后面的文本框中填写字符串形式的过滤器。

捕获过滤器遵循了伯克利包过滤的语法

image-20210419163720305.png

WireShark中的显示过滤器

WireShark的显示过滤器与捕获过滤器有两点明显的不同,一是显示过滤器可以在WireShark捕获数据之后再使用,二是显示过滤器的语法与捕获过滤器语法并不相同。在 WireShark 中有多种创建显示过滤器的方法。

  • 使用过滤器输入框创建显示过滤器
  • 使用过滤器表达式创建过滤显示器
  • 在数据包细节面板中创建显示过滤器

使用过滤器输入框创建显示过滤器

image-20210419164201999.png

使用过滤器表达式创建过滤显示器

image-20210419164408629.png

image-20210420101835366.png

image-20210420101846139.png

image-20210420101911551.png

image-20210420101921062.png