2012-07-10 69 views
0

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

目前的解决方案我想执行的是要搜索的是相同的TCP流作为响应的一部分的HTTP请求包,然而,这似乎是一个低效的解决问题的办法,不必不断分离出来的TCP流然后通过它们搜索请求数据包。

有没有简单的方法将响应数据包与我缺少的请求相关联?

回答

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]