【发布时间】:2015-08-26 19:54:11
【问题描述】:
我已经知道如何读取 pcap 文件并获取其中的数据包。但是如何将数据包写入新的 pcap 文件?我需要这个将两个 pcap 文件合并为一个。
【问题讨论】:
我已经知道如何读取 pcap 文件并获取其中的数据包。但是如何将数据包写入新的 pcap 文件?我需要这个将两个 pcap 文件合并为一个。
【问题讨论】:
这可以使用joincap来完成。
go get -u github.com/assafmo/joincap
合并1.pcap和2.pcap:
joincap 1.pcap 2.pcap > merged.pcap
我写了joincap 来克服我认为mergecap 和tcpslice 处理错误的问题。
更多详情请至https://github.com/assafmo/joincap。
【讨论】:
根据我的评论,libpcap/WinPcap 是一个库,而不是程序,因此要使用 libpcap/WinPcap 合并捕获文件,您必须编写自己的代码来进行合并,使用 libpcap/WinPcap 读取输入文件并写入输出文件。
您可以使用现有工具(例如 tracemerge 或 Wireshark 的 mergecap)来合并捕获。
假设目标是通过时间戳合并两个文件的数据包,那么,如果你想编写自己的代码,你会:
pcap_ts 之一打开一个输出文件(不管是哪一个;所有pcap_t 所做的只是告诉pcap_dump_open()使用什么链路层标头类型和快照长度);并有一个循环,你:
然后,当您退出循环时,关闭转储文件。至此,您就完成了。
【讨论】:
pcap_loop(),然后使用pcap_dump() 将它们写入文件,然后使用pcap_loop() 从另一个文件中读取所有数据包,并使用pcap_dump() 将它们写入文件。我没有时间为您编写程序,所以您必须使用它来确定要编写的代码。