BerkeleyPacketFilter,通过TCP和端口过滤器(BerkeleyPacketFil

2019-10-20 20:55发布

通过TCP和端口过滤器,使用BerkeleyPacketFilter

有问题从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

Answer 1:

如果该Pcap.Net用户指南给出了如何使用BerkeleyPacketFilter类的例子在页面是可以相信,在CreateFilter方法带一个整数作为参数,它需要一个字符串作为参数。

这不应该是令人惊奇的,因为为底层的libpcap / Winpcap的API,用于处理分组过滤器的文档显示, pcap_compile()需要一个字符串作为参数,而对于过滤器的格式的文档表示的滤波器是一个字符串。

如果你想匹配一个给定的TCP端口号的字符串,字符串为“TCP端口N”,其中N是端口号。 你必须要么采取port ,将其转换为字符串,并以字符串“TCP端口”(完成后,“端口”后的空白)串联,或者只是串联的portnr字符串“TCP端口”。

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



文章来源: BerkeleyPacketFilter, filter by TCP and port