昨天试验了 NgWriter 和 普通 Writer ,NgWriter 格式处理起来注意事项较多,极易出错,此处使用普通 Writer 给出说明。

首先打开文件

1 fileName := pcapDataConfigs.RecordFileNamePrefix + "-" + time.Now().Format("2006-01-02_15:04:05.999Z07") + ".pcap"
2         f, err := os.Create(fileName)
3         if err != nil {
4             logger.Fatalln("Can not create pcapng for file name: ", fileName)
5         }

然后打开写入句柄

1 r := pcapgo.NewWriter(outputPcapFile)

若该文件为新文件,则在创建句柄之后,写入任何数据报文数据之前,必须先写入头信息

1 r.WriteFileHeader(uint32(handle.SnapLen()*1), handle.LinkType())

最后根据需要写入数据报文

1 e := outputPcapHandler.WritePacket(
2                 packet.Metadata().CaptureInfo,
3                 packet.Data(),
4             )
5             if e != nil {
6                 logger.Error("write packet to output file error ", e)
7             }

然后,该文件即可使用比如Wireshark等工具打开进行分析

 

posted on 2022-09-26 14:58  oilamp  阅读(102)  评论(0编辑  收藏  举报