从PCAP嗅探中重构数据

14

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

根据我的讨论 编写http嗅探器(或任何其他应用程序级别的嗅探器),我由于分段而遇到了问题-需要重构整个流(或解决碎片),以获得完整的HTTP数据包,这就是我需要帮助的地方。

非常感谢您的帮助!!

5个回答

9
很简单,只需从pcap中获取以太网帧并提取其中的IP数据包,重新组装任何被分段的数据包。然后,根据序列号重新排序IP数据包中的TCP分段,注意丢弃任何重复数据。然后,将流程作为HTTP流程进行处理。当然,HTTP不是以数据包形式传输的,它是一个应用层协议,但我相信一旦完成了所有这些工作,这一点就显而易见了。在执行所有这些操作时,要注意对IP头和TCP分段进行校验,以确保数据正确。此外,如果pcap漏掉了任何数据包,请确保适当处理。
为了帮助您,Linux TCP stack应该提供了内核中发生的这个过程的简明参考。

5

您可以使用tcptrace来重新组合pcap文件,而无需自己重新组装流。我相信-e会完成这个任务。

一旦您获得了应用程序层数据的完整部分,您可以使用简单的HTTP标头解析,比如从http://github.com/ry/http-parser这样的库。


谢谢 Joe...如果我自己做不了,我会尝试使用这些工具。再次感谢! - Ishi

2
为了重构一个pcap文件中所包含的数据,一个非常好用的工具是Xplico:http://www.xplico.org

2
PCapPlusPlus 包含一个示例控制台程序 TCPReassembly,该程序可以嗅探流量并将每个流输出到单独的文本文件中。您可以指定要监听的流,有很多选项可供选择。
文档还提到了一个名为 tcpflow 的 Linux 应用程序,具有更多选项。

2

重构pcap文件中http内容的最佳工具是justniffer。它使用Linux内核的部分来进行IP分段和TCP数据包排序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接