伯克利包过滤
伯克利包过滤中的限定符有下面的三种:
- 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。
WireShark中的捕获过滤器
捕获过滤器的配置必须要在使用WireShark进行捕获数据包之前进行,配置过程的步骤如下所示:
- 首先依次选择菜单栏上的“捕获”->“选项“按钮。
- 在“所选择接口的捕获过滤器”后面的文本框中填写字符串形式的过滤器。
捕获过滤器遵循了伯克利包过滤的语法
WireShark中的显示过滤器
WireShark的显示过滤器与捕获过滤器有两点明显的不同,一是显示过滤器可以在WireShark捕获数据之后再使用,二是显示过滤器的语法与捕获过滤器语法并不相同。在 WireShark 中有多种创建显示过滤器的方法。
- 使用过滤器输入框创建显示过滤器
- 使用过滤器表达式创建过滤显示器
- 在数据包细节面板中创建显示过滤器