在单独的 pcap 文件中捕获网站对象

Capture a websites objects in separate pcap files

一个网站通常由多个对象组成(例如文本文件,一些png文件等),我想知道是否有一种工具可以捕获不同pcap文件中的个体requests/responses?

例如,如果我浏览到 http://somewebsite.com , and some http://somewebsite.com consists of say {index.html, image1.png, somestylefile.css, image2.png}, the tool would capture the entire load of http://somewebsite.com 但生成 {index.html.pcap、image1.png.pcap、somestylefile.css.pcap、image2.png.pcap}

我不知道有什么工具可以做到这一点,或者可以使用 scapy 或类似的工具吗?

一个 HTTP 连接可以在同一 TCP 连接内有多个请求,浏览器大量使用此 HTTP 保持活动状态。使用 HTTP 流水线 requests/responses 甚至不需要及时完全分离,即即使前一个请求的响应不存在,客户端也可以发送另一个请求。使用 HTTP/2 数据也可以交错,即在同一连接内同时传输多个响应。

到目前为止,并不总是可以将数据捕获为单独的 pcap 文件,因为它们可能无法在数据包级别分离。但是,如果您不需要原始数据包边界,则可以为每个请求创建单独的 pcap 文件,这些文件不一定反映原始数据包,但反映应用层,即与请求匹配的响应。

实现此功能的一个工具是 httpflow.pl,它可以从现有 pcap 中提取 HTTP/1.x requests/response 对(或直接嗅探)并将每个 request/response 写入一个单独的 pcap 文件,就好像它是一个单独的 TCP 连接一样。它还可以清理数据以便于分析,即解块和解压缩 HTTP 主体。