我试图通过 libpcap 嗅探 HTTP 数据,并在处理 TCP 有效负载后获取所有 http 内容(标头+有效负载)。
根据我的讨论编写 http 嗅探器(或任何其他应用程序级嗅探器) https://stackoverflow.com/questions/2905430/writing-an-http-sniffer-or-any-other-application-level-sniffer,我面临着由于碎片造成的问题 - 我需要重建整个流(或对其进行碎片整理)以获得完整的 HTTP 数据包,这就是我需要一些帮助的地方。
谢谢期待!!
这真的很简单。只需获取从 pcap 获得的以太网帧并从中提取 IP 数据包,重新组装任何碎片即可。然后,根据序列号对 IP 数据包中的 TCP 段重新排序,注意丢弃任何重复的数据。然后,将该流作为 HTTP 流进行处理。当然,HTTP 不是以数据包的形式出现的;而是以数据包的形式出现的。它是一个应用程序层协议,但我相信一旦您完成了所有其他工作,这一点就会显而易见。在执行所有这些操作时,请注意对 IP 标头和 TCP 段进行校验和,以确保数据正确。另外,如果 pcap 碰巧丢失了任何数据包,请确保正确处理此问题。
为了帮助您一路走来Linux TCP 堆栈 http://lxr.linux.no/#linux+v2.6.34/net/ipv4/应提供内核中发生的此过程的简明参考。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)