首页 > 解决方案 > 将 Wireshark 过滤器表达式转换为 BPF

问题描述

所以我正在尝试制作一个程序来解析我网络上的某些 udp 数据包。为此,我使用 Sharppcap 和 C#。我有这个过滤器表达式,它在wireshark中完美运行:udp and frame.protocols==eth:ethertype:ip:udp:data

但是,当我尝试在我的 C# 应用程序中实现这一点时,我得到一个异常,因为过滤器表达式不是 BPF 有效的(我认为)。

有谁知道在 BPF 中正确的语法会达到同样的效果吗?

标签: c#networkingwiresharksniffing

解决方案


好像您正在混合捕获过滤器和显示过滤器。您的过滤器的udp一部分似乎是捕获过滤器,而其余部分是显示过滤器。显示过滤器只是隐藏了 Wireshark 中的一些结果,而捕获过滤器实际上会删除与过滤器不匹配的包。有关如何构建过滤器的信息,请参阅 pcap 过滤器文档:https ://www.tcpdump.org/manpages/pcap-filter.7.html

因此,您的 pcap 过滤器本质上是udp,您只对 UDP 包感兴趣。

当您检查包时,显示过滤器部分由您在代码中执行。


推荐阅读