gpt4 book ai didi

c# - BerkeleyPacketFilter,按 TCP 和端口过滤

转载 作者:可可西里 更新时间:2023-11-01 02:54:29 24 4
gpt4 key购买 nike

使用 BerkeleyPacketFilter 按 TCP 和端口过滤

从 Pcap.net 转换教程中的代码时遇到问题。需要能够通过 TCP 过滤数据包并插入端口值。我无法理解 BerkeleyPacketFilter 语法。

        //choose port
Console.WriteLine("Choose port nr");
string portnr = Console.ReadLine();
int port = Int32.Parse(portnr);


// Compile the filter
using (BerkeleyPacketFilter filter = communicator.CreateFilter(port))
{
// Set the filter
communicator.SetFilter(filter);

communicator.CreateFilter 中的语法是什么(如何插入 int 端口):我还做了以下事情:

       IpV4Datagram ip = packet.Ethernet.IpV4;
TcpDatagram tcp = ip.Tcp;

这与 PcapDotNet.Packets.Transport.TransportDatagram

最佳答案

如果the page in the Pcap.Net User Guide giving an example of how to use the BerkeleyPacketFilter class可以相信,CreateFilter 方法NOT 接受整数作为参数,它接受字符串作为参数。

考虑到 the documentation for the underlying libpcap/WinPCAP API for processing packet filters,这应该不足为奇显示 pcap_compile() 将字符串作为参数,the documentation for the format for filters表示过滤器是一个字符串。

如果您想要一个与给定 TCP 端口号匹配的字符串,则该字符串为“tcp port N”,其中 N 是端口号。您必须要么采用 port,将其转换为字符串,然后将其与字符串“tcp port”(在“port”后留有空格)连接起来,要么只连接 portnr 带有“tcp 端口”的字符串。

请注意,您还必须永远假设communicator.CreateFilter() 会成功。我没有看到 Pcap.Net 的任何在线文档,所以我不知道 CreateFilter 方法是否会为无效的过滤器表达式抛出异常。

关于c# - BerkeleyPacketFilter,按 TCP 和端口过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25675476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com