c# - WinPcap 过滤器字符串语法错误

标签 c# wireshark packet-capture winpcap

我正在尝试从配置 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 之间来回切换。您可以在您希望收集的特定界面上使用“捕获选项”来测试您的过滤器。

enter image description here

enter image description here

您的 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/

相关文章:

c++ - 将 Wireshark 的时间戳与::QueryPerformanceCounter 返回值相关联

c - 伯克利包过滤器结构 bpf_insn

c# - keycode(15)c#代表的char是什么?

c# - 我们应该如何向现有变量添加实例化?

c# - 如何使用 IHasManyConvention Fluent NHibernate 约定在 HasMany 映射上设置 PropertyRef?

c# - 一张一张导入显示图片

linux - tshark 2.2.6 在某些计算机上不显示 data.text 字段

tcp - Protocol Buffer Wireshark 插件

c# - 如何将 tsharks 输出实时传输到 C# 程序

c - 当一个不是预期的 TCP 序列号到达时会发生什么?