【发布时间】:2012-08-01 15:24:08
【问题描述】:
我们正在捕获每个采用这种格式(十六进制字节)的网络数据包。问题是我们想获取url,如果它以http://......的形式存在于数据包中?解释它以捕获 url 的最佳方法是什么?现在我们正在寻找http字符然后处理但是在哪里结束是另一个问题?
0000000 cf fa ed fe 07 00 00 01 03 00 00 80 02 00 00 00 0000010 0c 00 00 00 28 07 00 00 85 80 01 00 00 00 00 00 0000020 19 00 00 00 48 00 00 00 5f 5f 50 41 47 45 5a 45 0000030 52 4f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000040 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 0000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000060 00 00 00 00 00 00 00 00 19 00 00 00 78 02 00 00【问题讨论】:
-
您对协议有任何了解吗?如果您已经知道存在未编码的 ascii 字符,也许 gnu binutil 中的
strings可以提供帮助。 -
@jokester 这些是原始数据包,我猜主要是 tcp 或 udp 对吧?
-
你读过RFC2616吗?据我所知,文本“http://”实际上并没有出现在数据包中。它只是告诉浏览器使用 HTTP 协议。然后,浏览器将与协议定义的相关 HTTP 服务器建立连接。您需要嗅探看起来像 HTTP 的数据包,并将目标 IP 转换回一个名称 - 这可能与原始 URL 的名称不同。
-
名称在 HTTP 协议的
Host:标头中。这是强制性的,因为绝大多数网站都是虚拟托管在共享 IP 地址上的。 -
url 的其余部分(路径名)在最初的
GET行中。