我正在尝试处理以pdml格式输出的wireshark的大数据包捕获。然后使用lxml库将这些捕获加载到python中以遍历它们。我遇到的问题是我可以提取有关单个HTTP响应数据包的信息,然后我需要一种方法将其与其HTTP请求数据包相关联。
我想要实现的当前解决方案是搜索与响应相同的TCP流的HTTP请求数据包,但这似乎是解决问题的低效解决方案,必须不断地分离出TCP流和然后在它们中搜索请求包。
是否有一种简单的方法可以将响应数据包与我丢失的请求相关联?
答案 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]