# Name:fang xiaoyu
# Time: 2023/3/11 11:40
import os
import dpkt
import pcapy

# 指定要合并的文件夹路径和合并后的文件名
folder_path = "/path/to/folder"
merged_file = "merged.pcap"

# 获取文件夹内所有的pcap文件
pcap_files = [f for f in os.listdir(folder_path) if f.endswith('.pcap')]

# 打开第一个pcap文件，读取第一个数据包的时间戳
reader = pcapy.open_offline(os.path.join(folder_path, pcap_files[0]))
pcap = dpkt.pcap.Reader(reader)
_, ts = next(pcap)

# 创建一个新的pcap文件并写入第一个数据包
writer = dpkt.pcap.Writer(open(merged_file, 'wb'))
writer.writepkt(_, ts)

# 依次读取每个pcap文件的数据包并写入到新的pcap文件中
for pcap_file in pcap_files:
    reader = pcapy.open_offline(os.path.join(folder_path, pcap_file))
    pcap = dpkt.pcap.Reader(reader)
    for ts, buf in pcap:
        writer.writepkt(buf, ts)

# 关闭文件句柄
writer.close()

