2010-05-25 136 views
2

我想我的手理解PCAP库。 我可以应用一个过滤器,并在端口80获得TCP有效载荷。但接下来呢?我如何读取HTTP数据 - 假设我想知道http头中的“User Agent”字段值。我应该继续吗? 我已经搜索了网站(并且搜索了很多),并且可以在这里找到相关的主题: writing a http sniffer。但这并不能帮助我在任何地方...写一个http嗅探器(或任何其他应用程序级嗅探器)

谢谢!

回答

3

首先,您应该知道PCAP为您提供了数据包,并且不会重建TCP流,因此如果不首先重新构建数据,您将无法读取完整的HTTP TCP数据流。

假设所有数据都在一个数据包中可用,请尝试并查看我的回答a similar question。您需要做的不同之处是解析HTTP标头并获取用户代理。

如果您不限制自己使用C,并且可以使用Windows,则可以编写.NET应用程序并使用Pcap.Net来完美地解析以太网,IPv4和TCP。

+0

非常感谢你Brickner !! 我正在寻找这个 - 处理TCP有效载荷(但我更喜欢C学习)。 你可以请你解释一下你的代码行: /*开始url - 跳过“GET”*/url = tcpPayload + 4; 为什么4?我应该探索什么才能获得更多这样的值(我阅读RFC的HTTP,但不知道如何使用它)。 我实际上想读取该数据包中的所有HTTP数据。只有我重建完整的流才有可能吗?如果是的话,你可以给我一些关于重建的想法吗? 非常感谢! – Ishi 2010-05-25 21:30:21

+0

4用于“GET” - 3个ASCII字符+空格。 RFC包含所有可能的请求名称(如GET,POST ...)。 如果您只需要单个数据包中的HTTP数据,则不需要重建。如果你想要整个HTTP请求,你可能需要重建TCP流(如果请求多于一个数据包)。 TCP重建是另一个(也是相当复杂的)问题,您应该为Google或其他问题开个头。顺便说一下,你是使用LibPcap还是Windows包装WinPcap,还是你的问题更通用? – brickner 2010-05-26 05:29:00

+0

我在linux上使用libpcap。我的目标是捕获http数据包并提取一些有用的信息,但重建无疑目前太困难了。我应该瞄准只包含代码和消息的FTP--是否可行?例如。我想从FTP消息中提取用户名和密码。 – Ishi 2010-05-26 08:53:46

0

已经有一个很好的PCAP包装为.NET称为Pcap.Net - here it is

“Pcap.Net是写在C++/CLI和C# WinPcap的一个.NET包装它 特点几乎所有WinPcap功能 并包括一个数据包解释 框架。“