Возможно ли, что libpcap удалит пакет, а не просто нюхает его по мере его прохождения? Я хочу перехватить каждый пакет и инкапсулировать его в новый пакет вместе с данными измерений, но оба пакета (мои и оригиналы) доходят до адресата.Drop пакет с libpcap
ответ
Единственный способ сделать это - это единственный физический путь между отправителем и получателем и отключение пересылки пакетов на перехватчике.
Если вы захватываете беспроводной трафик, вы ничего не можете сделать. Никакая библиотека программного обеспечения не может удалять радиоволны из окружающего воздуха.
Невозможно. Вам нужно написать драйвер (для вашей операционной системы), чтобы сетевые фильтры стека удаляли пакеты.
Существует множество возможностей ядра linux для изменения поведения сетевого стека. Например, 'echo 0>/proc/sys/net/ipv4/ip_forward' отключает пересылку пакетов, которые не адресованы этому хосту. –
@Ben: это правильно. Однако я сомневаюсь, что вы можете использовать такую конфигурацию для реализации того, что он хочет. –
IPTables для ядра Linux - это хорошее место для поиска информации о снижении количества pcakets –
Нет, libpcap не может «удалить пакет».
Не совсем понятно, чего вы хотите достичь, но похоже, что вы хотите получать данные, добавлять к нему дополнительную информацию и переиздавать ее. Если вы работаете с протоколом дейтаграмм, например UDP, вы можете просто повторно отправить свои расширенные данные на другой порт UDP.
В ответ на Бен S, вы не можете удалить пакеты с воздуха, но вы можете остановить их достижения своей цели - с помощью ARP кэша отравления и т.д.
Как и другие упоминали, вы не можете использовать Libpcap. libpcap - это пассивный слушатель. Если вы работаете в Linux, вы можете использовать netfilter, который подключается к iptables. Вот пример того, как это сделать.
так как этот вопрос о libcap, вы можете добавить Libpcap тег. – sivabudh