【问题标题】:Find the max value of TTL in DNS Wireshark在 DNS Wireshark 中查找 TTL 的最大值
【发布时间】:2023-03-17 11:10:01
【问题描述】:

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

如果我的 pcap 数据包如下:

  • DNS 响应 ttl 1045
  • DNS 响应 ttl 202
  • DNS 响应 ttl 45
  • DNS 响应 ttl 162
  • DNS 响应 ttl 398

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

感谢帮助

【问题讨论】:

  • 你指的是IP层的TTL字段吗?该字段为 8 位,因此其值永远不会超过 255...
  • 不,我知道这有点令人困惑,但 DNS 响应中有一个名为 Time To Live 的字段
  • 哦,对了!我虽然检查过,但我没有查看权威名称服务器记录。对于那个很抱歉!我会更新我的答案。
  • 已更新。原理相同,领域不同。

标签: dns wireshark pcap


【解决方案1】:

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

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

如果您返回 Wireshark 主窗口,您应该有一个新列,可用于对数据包进行排序。

【讨论】:

    【解决方案2】:

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

    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 字段的数据包,然后仅将该字段写入 @987654326 @,然后通过管道传输到 sort
    • 然后指示sort 进行 reverse 数字排序(因此从最高到最低值而不是默认的最低到最高值)并将输出通过管道传输到 head
    • 然后head -1 将只显示输出的第一行(而不是默认的 10 行),这将是最大值......可能*。

    请参阅tshark 手册页以了解有关我使用的选项的更多详细信息,例如-Y-e,并参阅sorthead 手册页了解有关这些命令的更多详细信息。

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

    【讨论】:

    • 谢谢,但是运行了你的命令后我发现最大的数字是:tshark -r file.pcap -Y dns.resp.ttl -T fields -e dns.resp.ttl -E aggregator=/s | sort -n | head -1(没有反向使用)
    猜你喜欢
    • 2015-01-06
    • 2011-11-21
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多