tcpdump 高级过滤来过滤 DNS RCODE

tcpdump 高级过滤来过滤 DNS RCODE

Ubuntu Xenial想使用tcpdumpRCODe 错误(ServFail、NXDomain 等)来过滤 DNS 响应。所以除了“0”之外的每个 RCODE。

(看IANA DNS R 代码

所以我必须使用基于 UDP 数据包中第 11 个字节的过滤器。 4 个低位包含 RCODE。我想测试该值是否不同于 0。因此我左移 4 位以仅获取这 4 个低位。

该命令不起作用:

tcpdump 端口 53 和 'udp[11] << 4 > 0'

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
  14:07:04.148693 IP ns-cache0.oleane.net.domain > 192.168.151.53.50372: 17799 2/0/0 CNAME video-stats.l.google.com., A 216.58.204.142 (82)
  14:07:04.150768 IP ns-cache0.oleane.net.domain > 192.168.151.53.50372: 39389 2/0/0 CNAME video-stats.l.google.com., AAAA 2a00:1450:4007:812::200e (94)
  14:07:04.150798 IP ns-cache0.oleane.net.domain > 192.168.151.53.60464: 60219 NXDomain* 0/1/0 (104)
  14:07:04.152703 IP ns-cache0.oleane.net.domain > 192.168.151.53.40235: 3472 1/0/0 PTR ns-cache0.oleane.net. (75)

我还收到 NoError DNS 响应...

但使用这个命令是有效的:

tcpdump 端口 53 和“udp[11]&0x0F > 0”

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
  14:07:42.014626 IP ns-cache0.oleane.net.domain > 192.168.151.53.54270: 44447 NXDomain 0/1/1 (109)
  14:07:42.016611 IP ns-cache0.oleane.net.domain > 192.168.151.53.41840: 57750 NXDomain* 0/1/0 (104)

为什么左移不起作用?

答案1

没有指定在 8 位寄存器中执行左移,并且高位被丢弃。 (事实上​​,移位可能使用机器具有的任何本机大小的寄存器,例如 32 位或 64 位)。

因此,不要使用左移来尝试掩盖值......

相关内容