我正在尝试使用 Pcap.net 操作一些网络捕获(pcap 格式)。我正在打开 pcap 文件并使用以下命令创建转储程序:
OfflinePacketDevice selectedDevice = new OfflinePacketDevice(pcapInFile);
using (PacketCommunicator PcapReader = selectedDevice.Open(655360, PacketDeviceOpenAttributes.Promiscuous, 1000))
{
PacketDumpFile PcapWriter = PcapReader.OpenDump(pcapOutFile);
PcapReader.ReceivePackets(count, PacketDispatcher);
}
PacketDispatcher 类似于:
private void PacketDispatcher(Packet packet)
{
// Manipulate the packet
PcapWriter.Dump(packet);
}
就 pcapInFile 数据链路是以太网类型而言,一切都很好。但是我有几个没有以太网层(rawip)的捕获,我必须建立一个新的以太网层。在这种上限中,数据链路类型与 pcapInFile(原始 ip)相同,我想将其更改为以太网 ...
如果我将所有操纵的数据包存储在一个 ienumerable 中并将它们转储为:
PacketDumpFile.Dump(pcapOutFile, new PcapDataLink(1), Packets.Count(), Packets);
它工作得很好......但是,如果你正在处理几个千兆的文件,这不是很有用......
任何的想法?谢谢!