在 DNS Wireshark 中查找 TTL 的最大值

Find the max value of TTL in DNS Wireshark

我有包含许多 DNS 请求和响应的 pcap 文件,我想从所有这些数据包中找到 ttl 字段的最大值,例如:

如果我的 pcap 数据包如下:

我想了解如何接收值 1045 甚至数据包本身。 这对我来说都是新的,所以请尝试仔细解释。

感谢帮手

要从您的 pcap 文件中找出数据包中的最大 TTL,您可以添加一个新的 TTL 列并按此列排序

为此,您可以右键单击其中一个列的名称(例如 Source),转到 Column Preferences...,单击列底部的 + 符号新建 window,并完成带有标题和 dns.resp.ttl 作为 Fields 选项出现的新行。

如果你回到主要的 Wireshark window,你应该有一个新的列,你可以用它来对数据包进行排序。

您也可以使用命令行工具来完成此操作,我发现它更快更简单,并且根据您的需要,还可以编写脚本。例如:

tshark -r file.pcap -Y dns.resp.ttl -T fields -e dns.resp.ttl -E aggregator=/s | sort -nr | head -1

这个命令:

  • 利用 Wireshark 命令行配套捕获工具 tshark 读取给定文件,仅过滤那些包含 dns.resp.ttl 字段的数据包,然后只将该字段写入 stdout,然后通过管道传输到 sort
  • sort 然后被指示进行 反向 数字排序(因此从最高到最低的值而不是默认的从最低到最高的值)并通过管道将其输出到 head
  • head -1 将只显示第一行输出(而不是默认的 10 行),这将是最大值......可能*。

有关这些命令的更多详细信息,请参阅 tshark man page for more details about the options I used, such as -Y and -e, and to the sort and head 手册页。

*您应该知道某些 DNS 数据包可能包含多次出现的 dns.resp.ttl 字段,因此此命令可能并不总是给您如果最大值恰好包含在该字段多次出现且不是第一次出现的数据包中,则为最大总值。不过,对于 Wireshark 解决方案也是如此。换句话说,当您从高到低对列进行排序时,如果数据包中多次出现该字段,则最大值不一定是第一个,因为排序仅考虑第一次出现的值。