【问题标题】:Modifying a pcap file based on packet length and other parameters根据数据包长度和其他参数修改 pcap 文件
【发布时间】:2017-11-01 19:17:08
【问题描述】:

我同意在这个网站上有很多关于编辑 .pcap 文件的帖子。但是,我还没有找到可以根据某些特定条件有效删除条目的 .pcap 编辑器。

例如,假设我想在 Time = 2 秒后删除所有长度为 172 字节的数据包。有没有提供这种灵活性的工具?

如果没有,有没有办法可以使用 C++ 访问 .pcap 文件,然后对其进行编辑,然后将其另存为 .pcap 文件?

【问题讨论】:

标签: pcap


【解决方案1】:

解决方案 #1

最灵活的方法是为这类东西编写自己的代码。在大多数使用专用库的编程语言中,读取 pcap 文件非常简单。在 C++ 中,可以使用 libpcap 来完成(参见 this answer

解决方案 #2

如果 pcap 文件不是太大,您可以使用Wireshark。只需将文件加载到 Wireshark 中,然后输入以下显示过滤器,然后输入 Enter!(frame.time_relative > 2 && frame.len == 172)。然后转到File -> Export Specified Packets.. 并选择displayed,输入文件名,并保存结果:

解决方案 #3

如果文件很大,但不是很大,或者需要命令行解决方案,可以使用 Wireshark 的命令行版本tshark。只需读入原始文件 (-r),应用相同的显示过滤器 (-Y),然后将生成的文件写入新位置 (-w):

类似:

tshark -r input.pcap -Y "!(frame.time_relative > 2 && frame.len == 172)" -w output.pcap

解决方案 #4

我可以建议的最后一个解决方案是使用libtrace (github here)。 但是,这有点棘手,因为您需要同时过滤数据包属性和时间。

一种方法是使用以下步骤顺序:

  1. 首先使用tracesplit 将您的 pcap 文件拆分为两个文件 - A.pcap 和 B.pcap,其中 A.pcap 将包含数据包,直到 2 秒标记,B 将包含其余的跟踪。 /p>

  2. 使用tracefilter 过滤A.pcap,这样只会保留长度不是172 字节的数据包 - 过滤字符串是len != 172

  3. 使用tracemerge 将过滤后的 A.pcap 和 B.pcap 合并到一个文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2017-08-27
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多