在大数据包捕获中将HTTP请求与响应相关联

时间:2012-07-10 13:02:53

标签: python http capture packet wireshark

我正在尝试处理以pdml格式输出的wireshark的大数据包捕获。然后使用lxml库将这些捕获加载到python中以遍历它们。我遇到的问题是我可以提取有关单个HTTP响应数据包的信息,然后我需要一种方法将其与其HTTP请求数据包相关联。

我想要实现的当前解决方案是搜索与响应相同的TCP流的HTTP请求数据包,但这似乎是解决问题的低效解决方案,必须不断地分离出TCP流和然后在它们中搜索请求包。

是否有一种简单的方法可以将响应数据包与我丢失的请求相关联?

1 个答案:

答案 0 :(得分:0)

到目前为止,我提出的最佳解决方案是在假设每个TCP连接只包含一个请求/响应对的情况下使用xpath。

#Get the stream index from the packet
streamIndex = packet.xpath('proto/field[@name="tcp.stream"]')[0].attrib['show']
#Use that stream index to get the matching response packet
return packet.xpath('/pdml/packet[proto/field[@name="tcp.stream" and @show="' + streamIndex + '"] and proto/field[@name="http.request.full_uri"]]')[0]