Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Wireshark筛选器表达式转换为BPF_C#_Networking_Wireshark_Sniffing - Fatal编程技术网

C# 将Wireshark筛选器表达式转换为BPF

C# 将Wireshark筛选器表达式转换为BPF,c#,networking,wireshark,sniffing,C#,Networking,Wireshark,Sniffing,因此,我试图制作一个程序,解析我网络上的某些udp数据包。为此,我使用Sharppcap和C。我有这个过滤器表达式,它在wireshark:udp和frame.protocols==eth:ethertype:ip:udp:data中完美地工作 然而,当我尝试在我的C#应用程序中实现这个时,我得到了一个异常,因为过滤器表达式不是BPF有效的(我认为) 有人知道正确的语法在BPF中可以实现相同的功能吗?看起来您是在混合捕获过滤器和显示过滤器。您的筛选器的udp部分似乎是捕获筛选器,而其余部分是显示

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

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


有人知道正确的语法在BPF中可以实现相同的功能吗?

看起来您是在混合捕获过滤器和显示过滤器。您的筛选器的
udp
部分似乎是捕获筛选器,而其余部分是显示筛选器。显示过滤器只是在Wireshark中隐藏一些结果,而捕获过滤器实际上会删除与过滤器不匹配的包。有关如何构造过滤器,请参阅pcap过滤器文档:

因此,在您的案例中,pcap过滤器本质上是
udp
,您只对udp包感兴趣


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

我现在明白您的意思了,谢谢。你知道wireshark是如何检测上述数据包的吗?当我手动检查数据包时,我似乎无法找到纯udp数据和STUN数据包之间的明显区别。Wireshark是一个非常强大的工具,它还可以让您过滤实际数据包中的值。而pcap(包捕获)在传输层执行其工作。Wireshark知道许多不同的协议可以作为UDP的一部分出现,包括RFC5389中定义的STUN包。是否有任何特定的内容需要过滤?是的,我只想处理“udp和frame.protocols==eth:ethertype:ip:udp:data”类型的数据包。我发现,如果排除icmp、icmpv6、STUN和dlts,如果有帮助的话,我可以得到与第一次查询相同的结果。