我正在尝试从配置 UI 生成 WinPcap 过滤器。现在我有一个过滤器字符串,看起来像这样 ip && (((ip.src == 10.10.10.10 && (tcp.port == 10 || udp.port == 10)) && (ip.dst == 20.20.20.20 && (tcp.port == 20 || udp.port == 20))))
。当我将此过滤器输入 Wireshark 时它是有效的,但是当我尝试通过 WinPcap 编译它时我得到一个语法错误
。我已经毫无问题地编译了一个简单的过滤器(ip 和 tcp
),所以我知道它与这个过滤器字符串有关。有什么想法吗?
最佳答案
您可能需要指定协议(protocol)而不是仅仅输入 ip
.
例如
(ip.proto == TCP) && ...
罢工><罢工>罢工>
因此您使用的过滤器选项符合 wireshark 语法。您需要使用 BPF format用于捕获数据,以便能够在 wireshark 和 WinPcap 之间来回切换。您可以在您希望收集的特定界面上使用“捕获选项”来测试您的过滤器。
您的 wireshark 过滤器将被翻译成以下 BPF 代码:
ip && (((ip src 10.10.10.10 && (port 10)) && (ip dst 20.20.20.20 && (port 20))))
参见 FilterCaptures Wireshark 和 Filter expression syntax 中的部分在 WinPcaps 页面上获取更多详细信息。
关于c# - WinPcap 过滤器字符串语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14465453/