如何将 Pcap.Net 数据包类对象导出到 .pcap 文件

Posted

技术标签:

【中文标题】如何将 Pcap.Net 数据包类对象导出到 .pcap 文件【英文标题】:How do I export Pcap.Net Packet Class Object To .pcap File 【发布时间】:2018-06-01 09:19:18 【问题描述】:

我正在开发一个应用程序,用户将在其中使用我的工具,但每次工具遇到一些数据包时,它都会将 c# 中的数据包类作为 .pcap 文件上传到我的站点,以便我可以亲自检查并制作必要的改变。我想知道是否有人知道我实现这个目标的方法。

    public XXXXXCapturer(LivePacketDevice globalDevice) 
        PacketCommunicator globalCommunicator = globalDevice.Open(512, PacketDeviceOpenAttributes.Promiscuous, 1000);

        using (BerkeleyPacketFilter filter = globalCommunicator.CreateFilter("ether host XX:XX:XX:XX:XX:XX"))
        
            globalCommunicator.SetFilter(filter);
        
        globalCommunicator.NonBlocking = false;
        globalCommunicator.ReceivePackets(1, HandlePackets);
    

    private void HandlePackets(Packet packet)
    
        XXXXXDecoder Decoder = new XXXXXDecoder(packet);
        // Get Packet & Upload
        Info = new XXXXXInfo(Decoder.Data);
    

【问题讨论】:

【参考方案1】:

在发布这个问题之前我已经找了几个小时,但没有找到任何结果,所以当我等待有人希望能回答这个问题时,我决定潜入并开始查看Pcap.Net 的一些代码。那是当我找到名为PcapDumpFile 的静态类和一个名为Dump() 的方法时。这种带有一些论点的方法完成了我在这个问题中提出的要求。我会留下这个问题,因为我希望其他有类似问题的人可以得到帮助。

我的Dump() 方法用法:

 PacketDumpFile.Dump(System.IO.Directory.GetLogicalDrives()[0] + @"Program Files (x86)\XXXXX\" + "temp.pcap", packet.DataLink.Kind, packet.Length, new List<Packet>  packet );

【讨论】:

教程中是否缺少任何内容 (github.com/PcapDotNet/Pcap.Net/wiki/…) @brickner 当然,当我犯了错误时,请带着尖刻的评论迟到。长大了。 我实际上是在查看文档中是否缺少某些内容,或者是否缺少一些指向文档的指针。教程链接可能对其他人有用。什么会阻止下一个人花费数小时寻找答案?然而,我长大可能为时已晚。 @brickner 我的解决方案解释说我只是在搜索类本身时找到它。

以上是关于如何将 Pcap.Net 数据包类对象导出到 .pcap 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pcap.net 中创建 HttpResponseDatagram 和 HttpResponseLayer

如何更改 PCap.Net 数据包数据?

c#在pcap.net中提供包源

.net 数据包捕获:pcap.net 与 Sharppcap

pcap.net ReceivePacket 无法正常工作

我需要能够使用 Pcap.Net 填充 tcp 数据包的以太网层