2009-08-16 4 views
2

Возможно ли, что libpcap удалит пакет, а не просто нюхает его по мере его прохождения? Я хочу перехватить каждый пакет и инкапсулировать его в новый пакет вместе с данными измерений, но оба пакета (мои и оригиналы) доходят до адресата.Drop пакет с libpcap

+0

так как этот вопрос о libcap, вы можете добавить Libpcap тег. – sivabudh

ответ

1

Единственный способ сделать это - это единственный физический путь между отправителем и получателем и отключение пересылки пакетов на перехватчике.

Если вы захватываете беспроводной трафик, вы ничего не можете сделать. Никакая библиотека программного обеспечения не может удалять радиоволны из окружающего воздуха.

2

Невозможно. Вам нужно написать драйвер (для вашей операционной системы), чтобы сетевые фильтры стека удаляли пакеты.

+0

Существует множество возможностей ядра linux для изменения поведения сетевого стека. Например, 'echo 0>/proc/sys/net/ipv4/ip_forward' отключает пересылку пакетов, которые не адресованы этому хосту. –

+0

@Ben: это правильно. Однако я сомневаюсь, что вы можете использовать такую ​​конфигурацию для реализации того, что он хочет. –

+0

IPTables для ядра Linux - это хорошее место для поиска информации о снижении количества pcakets –

1

Нет, libpcap не может «удалить пакет».

Не совсем понятно, чего вы хотите достичь, но похоже, что вы хотите получать данные, добавлять к нему дополнительную информацию и переиздавать ее. Если вы работаете с протоколом дейтаграмм, например UDP, вы можете просто повторно отправить свои расширенные данные на другой порт UDP.

0

В ответ на Бен S, вы не можете удалить пакеты с воздуха, но вы можете остановить их достижения своей цели - с помощью ARP кэша отравления и т.д.

0

Как и другие упоминали, вы не можете использовать Libpcap. libpcap - это пассивный слушатель. Если вы работаете в Linux, вы можете использовать netfilter, который подключается к iptables. Вот пример того, как это сделать.

http://www.linuxjournal.com/article/7184