Question

I am taking a digital securities class and I dont understand one of the examples on bitmasking.

To find IPv4 packets they say run this command

tcpdump IP[0] & 0xf0 = 4

I believe that this is wrong, the bit mask correctly only selects the first 4 bits of the IP header (which is the version number) and sets all the bits for the internet header length to 0.

But shouldnt the answer be

tcpdump IP[0] & 0xf0 = 0x40

This states to set all bits in the first byte of the IP packet header except for the first 4 bits (which is the version number) to 0 and to only show packets with this value equal to 0100 0000

Était-ce utile?

La solution

This states to set all bits in the first byte of the IP packet header except for the first 4 bits (which is the version number) to 0

More correctly, it selects the first 4 bits of the first byte of the IP packet header, and returns a value in which the lower 4 bits are zero.

So you are correct, in that tcpdump IP[0] & 0xf0 = 4 will NEVER succeed (as IP[0] & 0xf0 is in the range 0x00 through 0xf0, with the low-order nibble being 0, so it can NEVER equal 4), and IP[0] & 0xf0 = 0x40 will succeed only if the IP version number in the IP header is 4 (rather than, for example, 6).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top