将 Wireshark 过滤器表达式转换为 BPF

Convert Wireshark Filter Expression to BPF

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

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

有谁知道正确的语法在 BPF 中能达到同样的目的吗?

您似乎在混合捕获过滤器和显示过滤器。您过滤器的 udp 部分似乎是捕获过滤器,而其余部分是显示过滤器。 display filter只是在Wireshark中隐藏了一些结果,而Capture Filter,实际上是截掉了不符合filter的包。请参阅 pcap 过滤器文档,了解如何构建过滤器:https://www.tcpdump.org/manpages/pcap-filter.7.html

所以你的 pcap 过滤器本质上是 udp,你只对 UDP 包感兴趣。

显示过滤器部分由您在检查包时在代码中完成。