【问题标题】:How to tell what file a packet came from after files merged文件合并后如何判断数据包来自哪个文件
【发布时间】:2020-10-14 02:28:25
【问题描述】:

我正在处理来自众多集合来源的大量 pcap 文件。我需要以编程方式过滤,为此我使用 tshark,所以我首先使用 mergecap 将所有文件合并在一起。问题是我还需要仅在捕获文件名中可用的收集点信息。我尝试使用 editpcap 添加指定原始文件的每个数据包 cmets,但是这是站不住脚的(请参阅下面的说明)。任何想法如何在 pcap 文件合并后跟踪原始文件?

为什么 editcap 解决方案不起作用 我考虑在合并之前使用editcap在每个数据包上添加每个数据包的cmets(How to add a comment to all packets in numerous pcap files before merging into a single file)但是这种方法的问题是editcap需要在命令行上单独指定每个数据包注释(你不能指定一个范围包)。那是数十万个 cmets,命令行将不支持它。此外,如果我尝试一次只使用几个 cmets 运行 editpcap,它每次都会重写整个文件,导致数千次文件重写。也不可行。

【问题讨论】:

    标签: pcap tshark editcap


    【解决方案1】:

    如果您的原始捕获文件是 .pcapng 格式,则每个文件都包含一个接口描述块或 IDB。当您运行mergecap 来合并它们时,您可以使用-I none 选项指定不合并IDB。这样,每个原始文件的接口编号都是唯一的,您可以添加一个显示该信息的列,以便通过接口 ID 轻松区分每个数据包的来源,或者您可以应用显示过滤器仅将这些数据包与特定的数据包隔离捕获文件。

    要使用的过滤器或列是 frame.interface_id 字段,但您也可以按 frame.interface_name 或 frame.interface_description 进行过滤> 如果这些字段值也都有不同的值,但不能保证这些字段是唯一的,因为接口名称和/或描述可能包含相同的信息,即使捕获文件来自不同的机器。

    【讨论】:

    • 不幸的是,捕获文件是 pcap 而不是 pcapng,正如您所说,由于“业务逻辑”,我不能依赖 IDB 是唯一的。但是,这确实让我想知道收集后我是否可以遍历所有 pcap 文件,添加 IDB 描述并保存为新的 pcapng,然后将所有 pcapng 合并在一起。是否可以在收集后添加类似于 IDB cmets 的 IDB 描述?它可以通过编程方式完成吗?
    • 当前,当您使用editcap 将 pcap 文件转换为 pcapng 时,会添加一个虚拟以太网 IDB。 ('Editcap` 是一个命令行工具,因此可以编写转换脚本。)不幸的是,以这种方式创建的所有 pcapng 文件都不包含 interface_description,而只有“unknown”作为 interface_name;但是,mergecap 将枚举所有接口,因此每个数据包至少会在 interface_id 字段中指示它来自的枚举接口 ID,因此您应该能够使用此信息来知道哪个数据包来自哪个原始文件并捕获点。
    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 2016-04-29
    • 2011-10-05
    • 2021-08-21
    相关资源
    最近更新 更多