Обнюхивание этак пакетов 802.3 с сокетом raw - PullRequest
1 голос
/ 23 июня 2011

Мне нужно было бы прослушать пакеты интерфейса BPDU (модуля данных протокола моста), которые инкапсулированы в эти кадры типа 802.3 с заголовком LLC. Я пытался открыть сокет raw:

skd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_802_3))

но пытаясь понюхать пакеты, я не могу их поймать. Глядя на include / linux / if_ether.h кажется, что ETH_P_802_3 был фиктивным типом ... есть ли решение или я должен использовать ETH_P_ALL и проанализировать поле EtherType заголовка ethernet?

Спасибо всем!

1 Ответ

1 голос
/ 23 июня 2011

Извините, я не уверен, что ваш вопрос касается флага ETH_P_ALL или ваш анализатор просто не работает.

Я бы рекомендовал использовать ETH_P_ALL и декодировать заголовки самостоятельно.

Если ваши снифферы не работают, убедитесь, что у вас включен беспорядочный режим? Из командной строки вы можете использовать ifconfig eth0 promisc, предполагая, что ваше сетевое устройство eth0. Или вы можете установить флаг IFF_PROMISC на вашем устройстве, используя ioctl.

Все вышесказанное, если у вас нет веских причин не делать этого, вероятно, вам стоит не изобретать велосипед и просто использовать libpcap .

...