2012-08-17 17 views
9

Używam funkcji Scapy i chcę filtrować w oparciu o docelowy adres mac.Filtr BPD do wykrywania nie działa

Wyświetlane są jednak pakiety, w których docelowy adres MAC nie jest adresem określonym w filtrze.

Oto snippit Kod:

from scapy.all import * 

sniff(iface="eth1", filter="ether dst host 91:e0:f0:01:00:00", 
     count=3, prn=lambda x: x.show()) 

Używam Scapy 2.2.0

Wszelkie pomysły na ten temat tutaj?

+0

Rozważmy formatowania kodu. –

+0

Formatowanie kodu nie rozwiązało problemu. – user1607606

+0

Próbowałem kod w moim systemie, ta sama wersja scapy. Filtr działał. Jakie rodzaje adresów MAC przechodzą przez filtr? – RyPeck

Odpowiedz

1

To scapy wina !!! Wydaje się, że scapy rozpoczyna odbieranie pakietów przed zastosowaniem filtru BPF (argument filter funkcji sniff). Poprawne wykonanie pracy zajmuje trochę czasu! Dwa sposoby, aby pozbyć się w ten sposób:

  1. Korzystając lfilter zdefiniować funkcję filtrowania wewnątrz skryptu. Nie jest wydajny w przypadku łącza zajętego, ponieważ filtr jest stosowany w skrypcie zamiast w jądrze. Rozważ skorzystanie z pypy, aby przyspieszyć.
  2. Dla niektórych pierwszych pakietów sprawdź docelowy adres MAC wewnątrz skryptu, a następnie nie sprawdzaj go; to znaczy sprawdź poprawność pakietu w czasie początkowym węszenia, aby przejść niestabilną fazę scapy, a następnie polegaj na scapy, aby odfiltrować niepożądane pakiety.
+0

Oczywiście, uaktualnienie wydaje się naprawić to – Cukic0d

1

Instalacja tcpdump rozwiązał problem dla mnie - teraz filtr na sniff działa

1

W moim przypadku uaktualniania do 2.3.3dev (wersja GitHub), stała ona

Powiązane problemy