DNS RCODE를 필터링하는 tcpdump 고급 필터링

DNS RCODE를 필터링하는 tcpdump 고급 필터링

RCODe 오류(ServFail, NXDomain 등)를 Ubuntu Xenial사용하여 DNS 응답을 필터링하고 싶습니다 . tcpdump따라서 "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비트와 같이 컴퓨터에 있는 기본 크기 레지스터를 사용할 수 있습니다.)

따라서 값을 가리기 위해 왼쪽 Shift 키를 사용하지 마십시오.

관련 정보