设置协议分析仪的捕获过滤器是优化数据捕获、减少无关流量干扰的关键步骤,尤其在处理高带宽或复杂网络环境时。以下是分步骤的详细指南,涵盖不同协议分析仪(如Wireshark、Vector CANoe、Kvaser等)的通用方法及具体示例:
捕获过滤器(Capture Filter)用于在数据采集阶段直接过滤掉不符合条件的流量,仅捕获目标数据。与显示过滤器(Display Filter,用于后期分析时筛选数据)不同,捕获过滤器能显著减少存储空间占用和处理负载,尤其适用于:
不同协议分析仪的捕获过滤器语法可能略有差异,但通常基于BPF(Berkeley Packet Filter)语法,核心结构如下:
[协议] [方向] [源/目标] [条件] [值] [逻辑运算符] ...
常见字段:
tcp
、udp
、icmp
、arp
、can
、lin
、flexray
等。src
(源)、dst
(目标)、src or dst
(任意方向)。host
(主机地址)、port
(端口号)、id
(CAN ID)、dlctype
(数据链路层类型)等。and
(与)、or
(或)、not
(非)。明确需要捕获的流量类型,例如:
0x123
的报文。80
(HTTP)的TCP流量。根据目标编写BPF表达式,以下是常见场景示例:
0x123
的报文。can id 0x123或(更通用的BPF语法):
can and ((can.id & 0x7FF) == 0x123)说明:
0x7FF
是CAN 2.0B标准ID的掩码(11位)。443
(HTTPS)的TCP流量。tcp port 443扩展:若需同时捕获HTTP(端口80)和HTTPS:
tcp port 80 or tcp port 443
not arp and not ether broadcast说明:
ether broadcast
表示以太网广播地址(FF:FF:FF:FF:FF:FF
)。192.168.1.100
且目标端口为22
(SSH)的TCP流量。tcp and src host 192.168.1.100 and dst port 22
ping
测试ICMP过滤),观察是否仅捕获目标数据。.cfg
或.xml
文件中,与项目关联。0x100-0x1FF
:can and ((can.id & 0x7FF) >= 0x100) and ((can.id & 0x7FF) <= 0x1FF)
can.id
和can.flags
字段:can and ((can.id & 0x1FFFFFFF) == 0x12345678) and (can.flags.ext == 1)
can.id == 0x123
)可用于后期分析时进一步钻取数据。flexray
过滤)。and
条件)。通过合理设置捕获过滤器,可显著提升协议分析仪的效率和审计精准度。关键步骤包括:明确过滤目标→选择协议分析仪→编写BPF表达式→验证并测试→保存模板。对于复杂场景,可结合掩码、逻辑运算符和协议特定字段实现精细化过滤。同时,需注意不同工具的语法差异,并通过测试验证过滤器效果。