我使用wireshark从一些站点收集数据,然后使用tcpdump将其作为文本文件获取。
大多数同时使用这两种工具的人将它们用于相反的目的。:-) 即,他们使用 tcpdump 将流量捕获到文件中,然后使用 Wireshark 读取文件。如果您只使用 Wireshark 来捕获流量,那可能是矫枉过正——您可以使用 dumpcap 甚至 tcpdump 做同样的事情。
您显示的输出是文本输出,因此,如果您“使用 tcpdump 将其作为文本文件获取”,则它是来自tcpdump的输出,而不是来自Wireshark的输出;Wireshark 的文本输出看起来会有所不同。如果你“使用 Wireshark 从某些站点收集数据,然后使用 tcpdump 将其作为文本文件获取”,那么 Wireshark 的输出要么是pcap 文件,要么是pcap-ng 文件,它是一个二进制文件,完全未经解释的原始数据。您的示例中的数据解释是由 tcpdump 完成的,而不是 Wireshark。
输出的意思是:
“21:08:05.454852”:数据包在当地时间 21:08:05 和几分之一秒内到达。
“IP”:数据包是 IPv4 数据包。
“10.0.0.2.57512 > ord08s09-in-f21.1e100.net.https”:报文从IP地址10.0.0.2,端口57512,到主机名为“ord08s09-in-f21”的IP地址.1e100.net”,以及“https”的端口,即端口 443。
有关该行其余部分的详细信息,请参见 tcpdump 手册页和 TCP 描述。
这里的关键点是这不是DNS 流量!它可能是“HTTP-over-SSL”或“https”流量。
在 tcpdump 中,DNS 流量看起来像
11:06:25.247272 IP 10.0.1.3.50953 > 10.0.1.1.domain: 7088+ A? www.kernel.org. (32)
11:06:25.282723 IP 10.0.1.1.domain > 10.0.1.3.50953: 7088 3/0/0 CNAME pub.us.kernel.org., A 149.20.4.69, A 198.145.20.140 (85)
或者
11:06:30.622744 IP 10.0.1.3.62767 > 10.0.1.1.domain: 2439+ A? e3191.c.akamaiedge.net.0.1.cn.akamaiedge.net. (62)
11:06:30.639279 IP 10.0.1.1.domain > 10.0.1.3.62767: 2439 1/0/0 A 184.85.109.15 (78)
“一个?” 表示正在对 A 记录进行查询;“CNAME”表示正在返回 CNAME 记录(即,“www.kernel.org”是“pub.us.kernel.org”的别名,“A”表示正在返回 A 记录,给出IPv4 地址。
在 Wireshark 或 TShark 中,它看起来像:
12.316361 10.0.1.3 -> 10.0.1.1 DNS Standard query 0xc2fa A 1.courier-sandbox-push-apple.com.akadns.net
12.332894 10.0.1.1 -> 10.0.1.3 DNS Standard query response 0xc2fa A 17.149.34.59 A 17.149.34.61 A 17.149.34.62 A 17.149.34.63 A 17.149.34.57
或者
15.163941 10.0.1.3 -> 10.0.1.1 DNS Standard query 0x168c A www.gnu.org
15.176266 10.0.1.1 -> 10.0.1.3 DNS Standard query response 0x168c CNAME wildebeest.gnu.org A 208.118.235.148
如果您只是尝试捕获 DNS 数据包,则应使用“端口 53”或“端口域”等捕获过滤器,以便丢弃非 DNS 流量。该过滤器将与 Wireshark、TShark 或 tcpdump 一起使用(因为它们使用相同的 libpcap 代码进行数据包捕获)。