我想写一个程序,通过数据包捕获来提取系统访问的网站的URL( IP地址)。我认为这个URL会出现在数据部分(即不在任何报头中-以太网/ ip / tcp-udp )..(这样的程序有时被称为http嗅探器,我不应该使用任何可用的工具)。作为一个初学者,我刚刚经历了一个基本的嗅探器程序:sniffex.c。有人能告诉我我应该往哪个方向走吗?
发布于 2010-01-16 01:08:35
注意:在下面的信息中,假设GET还包括POST和其他HTTP方法。
这肯定要比查看一个数据包多得多的工作,但如果您捕获整个流,您应该能够从发出的HTTP标头中获取它。
尝试查看Host标头(如果已提供),以及GET实际请求的内容。GET可以是完整的URL,也可以只是服务器上的一个文件名。
还要注意,这与从IP地址获取域名无关。如果你想要域名,你必须挖掘数据。
在我的机器上,Wireshark提供了一个简单的例子:
GET http://www.google.ca HTTP/1.1
Host: www.google.ca
{other headers follow}另一个例子,不是来自浏览器,GET中只有一个路径:
GET /ccnet/XmlStatusReport.aspx HTTP/1.1
Host: example.com在第二个示例中,实际的URL是http://example.com/ccnet/XmlStatusReport.aspx
发布于 2010-01-16 00:40:22
不,没有足够的信息。单个IP可以对应于任意数量的域名,并且这些域名中的每一个都可以具有无限数量的URL。
但是,看看gethostbyaddr(3),看看如何在ip上执行反向dns查找,以便至少获得该ip的规范名称。
更新:由于您已经编辑了问题,@aehiilrs有一个much better answer。
发布于 2010-01-16 00:40:42
您可能需要反向DNS查找。为此调用gethostbyaddr。
https://stackoverflow.com/questions/2073183
复制相似问题