предотвращение libpcap для захвата пакетов, введенных с помощью pcap_inject () - PullRequest
2 голосов
/ 09 декабря 2010

в настоящее время размышляет о возможности прослушивания на том же интерфейсе, используя только pcap, а также вводить пакеты, используя pcap_inject.

Эту проблему можно легко решить с помощью:

  • persistentотслеживание контрольной суммы / большая медленная карта /,
  • отслеживание контрольной суммы - до тех пор, пока не будут введены все данные, скажем, первый запрос http;
  • взломает bpf / libipq / Netfilter для переноса дополнительного параметра для каждого реальногоПакет PHY

Но:

pcap прослушивает eth0 / ситуация в реальном мире ближе к "pcap прослушивает и отбрасывает через исходную магию" /, pcap отправляет пакеты через дескриптор eth0, чтобы их можно было маршрутизироватьиз.Каково теоретическое основание для libpcap не захватывать пакеты, которые были введены в один и тот же интерфейс с использованием одной и той же библиотеки - например, внедренные пакеты не проходят через весь код фильтра пакетов Беркли?

Практический тест TBD.

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

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

ether dst aa:bb:cc:dd:ee:ff 

... или который захватывает все, кроме того, что отправлено на соответствующем интерфейсе:

not ether src aa:bb:cc:dd:ee:ff

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

1 голос
/ 23 декабря 2010

Возможно просто игнорировать пакеты со свойством skb->pkt_type == PACKET_OUTGOING в пути получения.

...