如何从pcap-ng文件中的分组数据中提取链路层数据?

时间:2017-04-23 01:26:19

标签: c# python winpcap pcap-ng

我有一个pcap-ng文件,我想提取源/目标IP。

根据winpcap dump file format,我要查找的数据位于增强数据包块的数据包数据部分。

我一直在C#中使用this library来解析pcap-ng文件。虽然我已经能够成功地获得增强数据包阻止功能,但我真的不确定如何进入增强数据包阻止。

当前的增强型数据包数据包数据使用以下方法作为字节数组出现。

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十六进制存在于何处。我知道它不是每次都在同一个地方,但我需要知道如何计算它。

1 个答案:

答案 0 :(得分:0)

使用https://github.com/chmorgan/packetnet解析数据包数据

示例:

var packet = Packet.ParsePacket(LinkLayers.Ethernet, enhancedPacketBlock.Data);
var ip = packet.Extract<IPPacket>();