如何切割tcpdump/wireshark抓取的数据包
editcap 是 Wireshark 自带的一个非常强大的命令行工具,专门用于切分、转换和过滤 pcap/pcapng 抓包文件。
如果你想切割大文件,主要有两种常用方式:按数据包数量”切割 或 按时间间隔”切割。
1. 按数据包数量切割
如果你想把一个大 pcap 文件拆分成数个包含固定数据包数量的小文件,可以使用 -c 参数(count)。
1 | editcap -c <每个文件的包数量> <原始文件.pcap> <输出文件名> |
示例:
假设你有一个很大的 traffic.pcap,想把它每 10,000 个数据包切成一个小文件:
1 | editcap -c 10000 traffic.pcap split_file.pcap |
输出结果:editcap 会自动在输出文件名后面加上序号,生成 split_file_00000_20260610133601.pcap、split_file_00001_20260610134000.pcap 等文件(后缀会带有时间戳和序号)。
2. 按时间间隔切割(推荐)
如果你想根据时间段来拆分文件,比如每隔 1 小时(3600 秒)保存一个文件,可以使用 -i 参数(interval)。
1 | editcap -i <时间间隔(秒)> <原始文件.pcap> <输出文件名前缀> |
示例:
每隔 300 秒(5 分钟)切分一次文件:
1 | # 5min |
3. 提取特定时间段的流量 (裁剪)
如果你不是想均匀切割,而是想提取某一个特定时间段的流量,可以使用 -A(开始时间)和 -B(结束时间)参数。
注意: 时间格式必须是
YYYY-MM-DD HH:MM:SS。
1 | editcap -A "YYYY-MM-DD HH:MM:SS" -B "YYYY-MM-DD HH:MM:SS" <原始文件.pcap> <输出文件.pcap> |
示例:
提取 2026 年 6 月 10 日 下午 13:00:00 到 13:15:00 之间的流量:
1 | editcap -A "2026-06-10 13:00:00" -B "2026-06-10 13:15:00" traffic.pcap target_time.pcap |
4. 按指定序号范围提取 (指定包切割)
如果你只想保留文件中的某一段数据包(例如第 1 到第 500 个包),直接在命令最后加上序号范围即可。
1 | editcap <原始文件.pcap> <输出文件.pcap> <包范围> |
示例:
只保留 traffic.pcap 中的第 1 到第 500 个数据包:
1 | editcap traffic.pcap selected_packets.pcap 1-500 |