我有pcap文件,其中包含许多DNS请求和响应,我想从所有这些数据包中找到ttl字段的最大值,例如:
如果我的pcap数据包如下:
我想知道如何接收1045的值甚至数据包本身。 这对我来说都是新的,所以请尽量仔细解释。
感谢帮助者
答案 0 :(得分:3)
要查找来自pcap文件的数据包中的最大TTL,您可以添加新的TTL列并按此列排序。
要执行此操作,您可以右键单击其中一个列的名称(例如Source
),转到Column Preferences...
,点击底部的+
符号在新窗口中,并使用标题dns.resp.ttl
作为Fields
选项完成新行。
如果你回到主要的Wireshark窗口,你应该有一个新列,你可以使用它来对数据包进行排序。
答案 1 :(得分:1)
您也可以使用命令行工具来实现这一点,我发现这些工具更快更简单,并且根据您的需要,也可以编写脚本。例如:
tshark -r file.pcap -Y dns.resp.ttl -T fields -e dns.resp.ttl -E aggregator=/s | sort -nr | head -1
此命令:
tshark
读取给定文件,仅对包含 dns.resp.ttl 字段的数据包进行过滤,然后仅将该字段写入stdout
,然后通过管道传送到sort
sort
执行反向数字排序(从最高到最低值而不是默认的最低到最高值)并输出到{{1 }} head
将只显示第一行输出(而不是默认的10行),这将是最大值...可能*。有关我使用的选项的详细信息,请参阅tshark
手册页,例如head -1
和-Y
以及sort
和head
手册页了解有关这些命令的更多详细信息。
*您应该知道某些DNS数据包可能包含多个 dns.resp.ttl 字段,因此此命令可能并不总能为您提供最大的总值如果最大值恰好包含在具有该字段的多次出现的数据包中,并且它不是第一次出现的。对于Wireshark解决方案也是如此。换句话说,当您将列从高到低排序时,如果数据包包含多次出现的字段,则最大值可能不一定是第一个,因为排序仅考虑第一次出现的值。 / p>