【问题标题】:Reconstructing data from PCAP sniff从 PCAP 嗅探中重建数据
【发布时间】:2011-02-24 09:18:49
【问题描述】:

我正在尝试通过 libpcap 嗅探 HTTP 数据,并在处理 TCP 有效负载后获取所有 http 内容(标头+有效负载)。

根据我在 Writing an http sniffer (or any other application level sniffer) 上的讨论,我面临着由于碎片而导致的问题 - 我需要重建整个流(或对其进行碎片整理)以获得完整的 HTTP 数据包,这就是我需要帮助的地方。

感谢期待!!

【问题讨论】:

    标签: http sniffer libpcap defragmentation


    【解决方案1】:

    PCapPlusPlus 包含一个示例控制台程序TCPReassembly,它会嗅探流量并将每个流输出到单独的文本文件。在许多选项中,您可以指示要收听的流。

    文档还提到了一个 linux 应用程序tcpflow,它提供了更多选项。

    【讨论】:

      【解决方案2】:

      从 pcap 文件重构 http 内容的最佳工具是 justniffer。它使用 linux 内核的 prtion 进行 IP 分片和 tcp 数据包重新排序。

      【讨论】:

        【解决方案3】:

        要重建 pcap 文件中包含的数据,Xplico 是一个很棒的工具:http://www.xplico.org

        【讨论】:

          【解决方案4】:

          您可以使用tcptrace 重新组装 pcap 文件,而不是自己重新组装流。我相信-e 会做到的。

          一旦您将应用层数据整合为一体,您就可以应用简单的 HTTP 标头解析......来自诸如 http://github.com/ry/http-parser 之类的库的 Perhps

          【讨论】:

          • 谢谢乔...如果我自己做不到,我会尝试这些工具。再次感谢!
          【解决方案5】:

          这真的很简单。只需从 pcap 获取以太网帧并从中提取 IP 数据包,重新组装任何碎片。然后,根据序列号对 IP 数据包中的 TCP 段重新排序,注意丢弃所有重复数据。然后,将该流作为 HTTP 流进行处理。当然,HTTP 不会以数据包的形式出现。它是一个应用层协议,但我敢肯定,一旦你完成了所有其他工作,这将是显而易见的。在执行所有这些操作时请注意对 IP 标头和 TCP 段进行校验和,以确保您的数据是正确的。另外,如果 pcap 碰巧错过了任何数据包,请确保您妥善处理。

          为了帮助您了解Linux TCP stack,应该提供一个简明的参考,因为它发生在内核中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-01-23
            • 1970-01-01
            • 2013-01-01
            • 1970-01-01
            • 2015-11-24
            • 2020-12-12
            相关资源
            最近更新 更多