2

问题

我使用 Wireshark 捕获 HTTP 视频流,并使用以下过滤器过滤掉相关的 GET 请求。

http.request.uri contains "identifier" && http.request.method == "GET" && ip.addr == xxx.xxx.xxx.xxx

问题

  1. 是否可以提取所有获取 GET URL 以分隔 .txt 文件?

  2. 或者是否可以提取与上面的过滤器匹配的原始响应数据包(没有标头)以分离文件,以便我最终拥有一堆单独的视频文件?

我希望我让自己足够清楚;-)

谢谢

4

2 回答 2

4

虽然这对于 Wireshark 可能是可行的,但对于Bro来说要容易几个数量级。

提取 URI

只需使用您的跟踪文件运行它:

bro -r <trace>

此调用在当前目录中生成一堆日志文件。您感兴趣的是http.log. 您可以过滤输出以仅获取 GET 请求:

bro-cut id.orig_h id.resp_h method host uri < http.log | awk '$3 == "GET"'

示例输出:

192.168.1.104   212.96.161.238  GET update.avg.com  /softw/90/update/avg9infowin.ctf
192.168.1.104   77.67.44.206    GET backup.avg.cz   /softw/90/update/u7avi1777u1705ff.bin
192.168.1.104   198.189.255.75  GET aa.avg.com  /softw/90/update/u7iavi2511u2510ff.bin
192.168.1.104   77.67.44.206    GET backup.avg.cz   /softw/90/update/x8xplsb2_118c8.bin

如您所见,最后两列构成了完整的 URL。要删除中间的空格,您可以使用 awk 连接最后两个字段。

提取文件

注意:即将发布的 Bro 2.1 版本将对文件提取进行重大改进。在此之前,您可以通过指定要存储的文件的 MIME 类型从 HTTP 流中提取所有文件:

bro -r <trace> 'HTTP::extract_file_type = /video\/avi/'

Bro 嗅探 HTTP 正文的 MIME 类型,如果它与正则表达式匹配/video\/avi/,它会创建一个带有前缀的文件http-itemHTTP::extraction_prefix您可以通过重新定义变量来更改前缀名称。

于 2012-06-18T10:52:08.360 回答
1

问题1的解决方案:-

使用 tshark 实用程序。易于安装,只需“ sudo apt-get install tshark

我使用的命令是:-

tshark  -R 'tcp.port==80 && (http.request.method == "GET" || http.request.method=="HEAD" || http.request.method=="POST" )'  -r eth2uplink_00001    -Tfields -e ip.dst -e http.request.method -e http.request.full_uri > requests_eth2_00001

请参阅此处的所有 Wireshark 显示过滤器:- https://www.wireshark.org/docs/dfref/

这是比使用 Bro 更好的方法,因为 Bro 安装起来非常复杂,因为它具有特定的依赖项并且很难满足它们。

我目前没有问题 2 的解决方案,但我相信它可以在类似的线路上构建一些东西。以下选项可能对您正在尝试的内容有用。

-O 仅显示这些协议的数据包详细信息,逗号分隔

-x 添加十六进制和 ASCII 转储的输出(数据包字节) 您可以参考 tshark --help 了解更多信息。

希望这可以帮助。谢谢。

于 2015-04-16T11:08:59.713 回答