Управление пакетами с помощью проекта 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;
}
1 ответ
Ответ - да.
Я верю, что обсуждение на форуме Pcap.Net поможет вам.
В общем, вам нужно извлечь все соответствующие уровни (полезную нагрузку Ethernet, IPv4 и IPv4), изменить IP уровня IPv4 и построить новый пакет.
Если вы хотите убедиться, что контрольная сумма IPv4 будет правильной, вам нужно установить в поле контрольной суммы уровня IPv4 значение null.
Если у вас есть TCP или UDP, и вы хотите убедиться, что их контрольная сумма верна, вам нужно извлечь соответствующий транспортный уровень, изменить его поле контрольной суммы на null и построить пакет из уровней Ethernet, IPv4, Transport и Transport.
Надеюсь, это поможет.