Обработка пакетов с помощью проекта Pcap.net

Я использую Pcap.net для отправки пакетов, используя буфер отправки с файлом Wireshark (расширение pcap), и мой вопрос: есть ли способ изменить IP-адрес пакета во время или перед воспроизведением? Здесь я заполняю буфер пакетами из файла перед отправкой:

int numPackets = 0;
Packet packet;
while (inputCommunicator.ReceivePacket(out packet) == PacketCommunicatorReceiveResult.Ok)
{
    ILayer layer = packet.Ethernet.ExtractLayer(); --> new layer
    sendBuffer.Enqueue(packet);
    ++numPackets;
}

person user979033    schedule 28.03.2012    source источник
comment
Вам нужно будет манипулировать пакетами до того, как они будут поставлены в очередь. Я думаю, что библиотека разбора пакетов, которую использует Pcap.NET, называется Packet.NET. Посмотрите, что вы можете с этим сделать.   -  person M.Babcock    schedule 28.03.2012
comment
я обновляю свой код и создаю новый слой, но не знаю, как продолжить   -  person user979033    schedule 28.03.2012


Ответы (1)


Ответ положительный.

Думаю, вам поможет обсуждение на форуме Pcap.Net.

Как правило, вам необходимо извлечь все соответствующие уровни (Ethernet, IPv4 и полезная нагрузка IPv4), изменить IP-адрес уровня IPv4 и создать новый пакет.

Если вы хотите убедиться, что контрольная сумма IPv4 будет правильной, вам необходимо установить в поле контрольной суммы уровня IPv4 значение null.

Если у вас есть TCP или UDP и вы хотите убедиться, что их контрольная сумма верна, вам нужно извлечь соответствующий транспортный уровень, изменить его поле контрольной суммы на нулевое и создать пакет из уровней полезной нагрузки Ethernet, IPv4, транспорта и транспорта.

Надеюсь, это поможет.

person brickner    schedule 30.03.2012