Получение полного модифицированного пакета icmp в сокете Linux raw

0

У меня есть определенная сетевая карта (NetFPGA), которая добавляет 8-байтную временную метку в конце пакета ICMP Echo Reply (контрольная сумма игнорируется). Когда я попытался прочитать пакет в raw-сокете таким образом:

recvsock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

Я получил только данные IP + ICMP без добавленной отметки времени. Я пытался:

recvsock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_IP));

Таким образом, я получаю все, и я не могу связать какой-либо адрес. Также попробовали:

recvsock = socket(AF_INET, SOCK_RAW, htons(ETH_P_IP));

Но ничего не поймали..

Любая идея, как я могу открыть сырой сокет, который поймает только определенные пакеты ответа эхо ICMP, но не опускает добавленную временную метку 8 байтов?

благодаря
Я делаю

Теги:
raw-sockets
icmp

1 ответ

0

Из того, что я нашел, очевидно, нет способа поймать полный пакет в сыром сокете и по-прежнему сделать сокет для фильтрации. Мне нужно было открыть сокет таким образом:

recvsock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_IP));

Для обнаружения всех входящих IP-пакетов, а затем фильтрации моих ICMP-пакетов на основе возможностей фильтрации libpcap.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню