Извлечение деталей пакета в C#

Я хочу реализовать следующие функциональные возможности:

выборка одного за другим пакетов из файла pcap. Мне нужно разделить пакеты в зависимости от их типа протокола. так что в основном я должен иметь возможность изменять объекты пакета, как IP-адрес

Я использую язык C#

Так возможно ли это реализовать с помощью Pcap.net?

Есть ли у кого-нибудь стандартный код? пожалуйста, предоставьте мне это.

Большое спасибо ftm

1 ответ

Да, это возможно.

См. "Чтение пакетов из файла дампа" в руководстве по Pcap.Net.

Сначала загрузите PcapDotNet.Core.dll и PcapDotNet.Packets.dll, а затем создайте класс

public class Session
{
    private IList<Packet> _PacketsSequence;

    public IList<Packet> PacketsSequence
    {
        get
        {
            if (_PacketsSequence == null)
                _PacketsSequence = new List<Packet>();
            return _PacketsSequence;
        }

        set { _PacketsSequence = value; }
    }
}

затем создайте класс

public class PacketParser
{
private List<Session> _TermonatedSessions;
private IList<Session> _Sessions;
private IDictionary<int, List<Packet>> _Buffer;

public PacketParser()
{
    _TermonatedSessions = new List<Session>();
    _Sessions = new List<Session>();
    _Buffer = new Dictionary<int, List<Packet>>();
}

public void ParsePacket(string filePath)
{
    OfflinePacketDevice selectedDevice = new OfflinePacketDevice(filePath);
    using (PacketCommunicator communicator = selectedDevice.Open(65536, PacketDeviceOpenAttributes.Promiscuous, 1000))
    {
        try
        {
            communicator.ReceivePackets(0, AnalyzeCurrentPacket);
        }
        catch { }
    }

    var AnalyzedSession = CombineOpenCloseSessions();
}

private IList<Session> CombineOpenCloseSessions()
{
    _TermonatedSessions.AddRange(_Sessions);
    _Sessions.Clear();
    _Buffer.Clear();

    return _TermonatedSessions;
}
}
Другие вопросы по тегам