pcap.net не соответствует выводу Wireshark - PullRequest
0 голосов
/ 04 февраля 2019

Я только что начал играть с pcap.net в C #, пытаясь разобрать существующий файл pcap (https://download.netresec.com/pcap/maccdc-2012/maccdc2012_00000.pcap.gz)

Я пытаюсь отфильтровать все TCP-пакеты, однако большая часть данных вэтот захват, кажется, происходит в VLAN, поэтому после некоторого чтения вот мой код:

    static long packetCount = 0;

    static void Main(string[] args)
    {
        string input = @"C:\Testing\pcap\maccdc2012_00000.pcap";

        OfflinePacketDevice offlineDevice = new OfflinePacketDevice(input);

        using (PacketCommunicator communicator = offlineDevice.Open(65536, PacketDeviceOpenAttributes.Promiscuous, 1000))
        {
            communicator.SetFilter("tcp or (vlan and tcp)");
            communicator.ReceivePackets(0, PacketHandler);
        }

        Debug.WriteLine("Packet count: " + packetCount);

    }

    private static void PacketHandler(Packet packet)
    {
        //Debug.WriteLine("Timestamp: " + packet.Timestamp.ToString("yyyy-MM-dd hh:mm:ss.fff") + " length: " + packet.Length + " " + packet.Ethernet.EtherType);
        packetCount++;
    }

Возможно, я неправильно понял синтаксис BPF, но, используя Wireshark для сравнения, я вижу следующее:

Wireshark total packets:  8635943
My program total packets: 8635943

Wireshark (tcp) filter: 8484315
My program (tcp) filter: 0
My program (tcp or (vlan and tcp)) filter: 8481053

Таким образом, существует несоответствие 151628 пакетов, которые показывает Wireshark, моя программа не работает. Возможно, сейчас Wireshark делает что-то еще, о чем я не знаю, но я немного запутался.

Если кто-то может предложить какой-либо совет или вклад, я был бы признателен.

...