![]() | 1 | initial version |
I haven't had luck generating a DNS packet with an opcode other than 0 so this hasn't been tested.
https://www.tcpdump.org/manpages/pcap-filter.7.html
(PACKET DATA ACCESSORS)
PACKET DATA ACCESSORS
To use the packet data in an arithmetic expression, use the following syntax:
proto [ expr : size ]
DNS RFC (https://datatracker.ietf.org/doc/html/rfc1035#section-4.1.1):
The header contains the following fields: 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ID | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |QR| Opcode |AA|TC|RD|RA| Z | RCODE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ --- snip ---
There are 8 bytes/octets in a UDP header (0-7), then two for the DNS ID
(UDP 8-9).
Try udp port 53 && udp[10] & 0x78 == 5
![]() | 2 | No.2 Revision |
I haven't had luck generating a DNS packet with an opcode other than 0 so this hasn't been tested.
https://www.tcpdump.org/manpages/pcap-filter.7.html
(PACKET DATA ACCESSORS)
PACKET DATA ACCESSORS
To use the packet data in an arithmetic expression, use the following syntax:
proto [ expr : size ]
DNS RFC (https://datatracker.ietf.org/doc/html/rfc1035#section-4.1.1):
The header contains the following fields: 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ID | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |QR| Opcode |AA|TC|RD|RA| Z | RCODE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ --- snip ---
There are 8 bytes/octets in a UDP header (0-7), then two for the DNS ID
(UDP 8-9).
Try udp port 53 && udp[10] & 0x78 == 5
(the bit math may not shift the result) so could be udp port 53 && udp[10] & 0x78 == 0x28
![]() | 3 | No.3 Revision |
I haven't had luck generating a DNS packet with an opcode other than 0 so this hasn't been tested.
https://www.tcpdump.org/manpages/pcap-filter.7.html
(PACKET DATA ACCESSORS)
PACKET DATA ACCESSORS
To use the packet data in an arithmetic expression, use the following syntax:
proto [ expr : size ]
DNS RFC (https://datatracker.ietf.org/doc/html/rfc1035#section-4.1.1):
The header contains the following fields: 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ID | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |QR| Opcode |AA|TC|RD|RA| Z | RCODE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ --- snip ---
There are 8 bytes/octets in a UDP header (0-7), then two for the DNS ID
(UDP 8-9).
Try udp port 53 && udp[10] & 0x78 ==
5
(the bit math may not shift the result) so could be udp port 53 && udp[10] & 0x78 == 0x28