PCAP Ethertype Return - PullRequest
       9

PCAP Ethertype Return

1 голос
/ 18 марта 2012

Я пытаюсь определить тип эфира пакета, который я получаю. Идентификатор типа эфира равен 608 и не имеет соответствующего определения в Ethertype.h (libpcap 1.2.1). Большинство полученных пакетов имеют любой тип 8, который также не имеет соответствующего определения в Ethertype.h. Кто-нибудь имеет какие-либо идеи о том, что может быть причиной этого или я должен связаться с TCPDump с сообщением об ошибке.

Ответы [ 2 ]

1 голос
/ 18 марта 2012

Какое возвращаемое значение pcap_datalink() на pcap_t, на котором вы снимаете?

Если это не DLT_EN10MB (значение 1), ваши пакеты не являются Ethernet-пакетами, и вы не должны анализировать их как Ethernet-пакеты.

Если это DLT_EN10MB, то это гекс 608 или десятичный 608? Если это десятичное число 608, это поле длины, а не поле типа. То же самое относится к 8, который является тем же десятичным или шестнадцатеричным и, таким образом, будет значением длины, а не значением типа.

0 голосов
/ 03 апреля 2012

С man-страницы:

"Функция ntohs () преобразует сетевое короткое целое число без знака из сетевого байтового порядка в байтовый порядок хоста.".

Из моего кода:

if (ntohs (ethernet-> ether_type) == 0x0800) ...

...