我想编写一个程序,通过数据包捕获来提取的通过系统访问的网站的网址(IP地址)。我觉得这个URL会在数据部分(即未在任何头 - 以太网/ IP / TCP-UDP)。(这样的程序有时被称为HTTP嗅探器,我不应该使用任何可用的工具)。作为一个初学者,我刚才通过这个基本的嗅探程序了: sniffex.c 。 。谁能告诉我在哪个方向,我应该继续..

有帮助吗?

解决方案

注意:在下面的信息,假设GET还包括POST和其他HTTP方法太

这肯定会比看着一个包了很多的工作,但是如果你捕捉整个流,你应该能够从发出HTTP头得到它。

试着看一下主机头如果是这样的提供,也什么是真正由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

其他提示

没有,没有足够的信息。单个IP可对应于任何数量的域名,并且每个这些域可以具有URL的字面上的无限数量。

但是,看看gethostbyaddr(3)来看看如何做对IP反向DNS查找,以至少获得该IP的规范名称。

更新:为你编辑的问题,@aehiilrs有更好answe

什么你可能想要的是一个反向DNS查找。调用gethostbyaddr为该。

如果您正在使用Linux,你可以在iptables中添加过滤器添加新的规则,查找包含HTTP GET请求的数据包并获取URL。

所以规则将这个样子。

有关的每个数据包从本地主机会在端口80 - >检查,如果分组包含GET请求 - >检索的URL,并将其保存

这个方法应该适用于所有情况,即使是HTTPS头。

我是研究对类似的东西和整个这个来了。 希望这会是一个好的开始,如果你使用的是Linux - justniffer

http://justniffer.sourceforge.net/

还有一个不错的http流量抢Python脚本,如果你正在寻找摆脱HTTP请求的信息,这将有助于。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top