Как извлечь данные из Link-Layer из Packet Data в файл pcap-ng?
У меня есть файл pcap-ng, и я хотел бы извлечь IP-адреса источника / назначения.
В соответствии с форматом файла дампа winpcap, данные, которые я ищу, находятся в разделе Packet Data расширенного блока пакета.
Я использую эту библиотеку в C# для анализа файла pcap-ng. И хотя мне удалось успешно выйти из Enhanced Packet Block, я действительно не уверен, как туда попасть.
Текущие Расширенные Пакетные Пакетные Данные Пакета выходят как байтовый массив, используя следующий метод.
private static void extractEnhancedPacketBlock()
{
var myFile = "\\path\\to\\my.pcapng"
using (StreamWriter file = new StreamWriter(myFile))
{
foreach (var enhancedPacketBlock in reader.EnhancedPacketBlocks)
{
byte[] packetData = enhancedPacketBlock.Data;
Console.WriteLine(BitConverter.ToString(packetData));
}
}
}
Что выводит то, что вы ожидаете, похоже на следующее:
79-2C-C8-80-A8-65-00-00-BC-C4-2F-65-09-00-42-00-01-5E...etc
Хороший ответ на это может быть несколько разных вещей, например, руководство о том, где искать, чтобы узнать больше о том, что мне нужно делать дальше. Библиотека, которая уже делает то, что я мог бы использовать (я пробовал много библиотек, и ни одна из них, похоже, не зашла так глубоко). Или, если у вас уже есть код, который делает это, это было бы здорово. Я также открыт для перехода на Python, если это необходимо.
Дополнительная информация.
Я знаю, что могу разобрать исходный IP-адрес и целевой IP-адрес из блоков расширенного пакета, и я знаю, что для этого потребуется преобразование шестнадцатеричного в IP-адрес, но я не знаю, где существует шестнадцатеричный IP-адрес в улучшенных пакетных блоках. Я знаю, что это не всегда одно и то же место, но мне нужно знать, как это вычислить.
0 ответов
Используйте https://github.com/chmorgan/packetnet для анализа пакетных данных
Пример:
var packet = Packet.ParsePacket(LinkLayers.Ethernet, enhancedPacketBlock.Data);
var ip = packet.Extract<IPPacket>();