WinPcap过滤器字符串语法错误

lum*_*ck4 1 c# packet-capture winpcap wireshark

我试图从配置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编译它时,我得到了一个syntax error.我编译了一个简单的filter(ip and tcp)没有问题,所以我知道它与这个过滤器字符串有关.有任何想法吗?

SwD*_*n81 5

您可能需要指定协议而不是仅仅放置ip.例如

(ip.proto == TCP) && ...
Run Code Online (Sandbox Code Playgroud)

因此,您使用的过滤器选项符合wireshark语法.您需要使用BPF格式捕获数据,以便能够在wireshark和WinPcap之间来回切换.您可以使用要收集的特定界面上的"捕获选项"来测试您的过滤器.

在此输入图像描述

在此输入图像描述

您的wireshark过滤器将转换为以下BPF代码:

ip && (((ip src 10.10.10.10 && (port 10)) && (ip dst 20.20.20.20 && (port 20))))
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Wireshark中的FilterCaptures部分和WinPcaps页面上的Filter表达式语法.