在之前文章《我是如何使用wireshark软件的》中介绍了wireshark的使用,提到了显示过滤器和捕获过滤器,重点介绍了显示过滤器,本文将主要介绍一下捕获过滤器。
这里再次说明一下两者区别,需要看显示过滤器的同学,请看文章《我是如何使用wireshark软件的》。
- 捕获过滤器:当进行数据包捕获时,只有那些满足给定的包含/排除表达式的数据包会被捕获。
- 显示过滤器:该过滤器根据指定的表达式用于在一个已捕获的数据包集合中,隐藏不想显示的数据包,或者只显示那些需要的数据包。
01简介
首先了解下,为什么需要捕获过滤器。举个例子,在一台服务器(TCPsever,端口5005)上,一个客户端(其他家公司设备)运行几天,就会突然掉线。这时候,说不清是服务器把客户端踢下线,还是客户端主动离线。
当然,这个时候在服务器添加日志记录即可,就可以找“真凶”。如果是对方设备主动离线,对方又不配合时,对方“不相信你的日志”。这个时候,使用wireshark抓包,找出对方设备(TCPClient)先发出的FIN断开连接的证据,然后“甩”他脸上即可。
其实上述场景,我在《我是如何使用wireshark软件的》文中也提到过解决方案,使用显示过滤加定时保存的策略,不过这样在几天的抓包中,会导致抓包文件很大。而捕获过滤则可以解决这个问题。
捕获过滤使用方法
1.选择捕获->捕获过滤器,然后编辑一个新的捕获过滤器选项:名称为“port5005”(名字根据自己的需求即可),过滤器为“port5005”。
2.在开始界面选择网卡,然后点击②处,选择上一步新建的输入捕获条件即可。
3.开始捕获
选择完输入捕获条件,如下图,直接双击网卡,就开始捕获了。
02BPF语法
捕获过滤器应用于WinPcap,并使用BerkeleyPacketFilter(BPF)语法。这个语法被广泛用于多种数据包嗅探软件,主要因为大部分数据包嗅探软件都依赖于使用BPF的libpcap/WinPcap库。掌握BPF语法对你在数据包层级更深入地探索网络来说,非常关键。
使用BPF语法创建的过滤器被称为表达式,并且表达式包含一个或多个原语。每个原语包含一个或多个限定词,然后跟着一个ID名字或者数字,如:
BPF语法也是支持下列逻辑运算符的,从而创造更高级的表达式。
- 连接运算符 与 (&&)
- 选择运算符 或 (||)
- 否定运算符 非 (!)
举例说明:
- src 192.168.0.10 && port 5005
上述表达式只对源地址是192.168.0.10和源端口或目标端口是5005的流量进行捕获。
03过滤示例
常用的过滤示例
注意灵活使用上文提到的逻辑运算符。