2012-08-17 14 views
9

Ich verwende Scapy und möchte basierend auf der Ziel-MAC-Adresse filtern.Scapy BPF Filter funktioniert nicht

Ich bekomme jedoch Pakete angezeigt, bei denen die Ziel-MAC-Adresse nicht die im Filter angegebene Adresse ist.

ist hier ein Code snippit:

from scapy.all import * 

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

I scapy 2.2.0 hier

Irgendwelche Ideen zu diesem Thema ausführe?

+0

Betrachten Sie Ihre Code-Formatierung. –

+0

Das Formatieren des Codes hat das Problem nicht behoben. – user1607606

+0

Versuchte den Code auf meinem System, gleiche Version von scapy. Der Filter hat funktioniert. Welche Arten von MAC-Adressen kommen durch den Filter? – RyPeck

Antwort

1

Es ist scapy Fehler !!! Es scheint, dass scapy beginnt, Pakete vor dem Anwenden des BPF-Filters zu empfangen (filter Argument von sniff Funktion). Es dauert eine Weile, um die Arbeit richtig zu machen! Zwei Methoden, um loszuwerden:

  1. Verwenden lfilter Ihre Filterfunktion im Skript zu definieren. Es ist nicht effizient bei ausgelasteten Links, da der Filter in Ihrem Skript anstelle des Kernels angewendet wird. Erwägen Sie die Verwendung von pypy, um es zu beschleunigen.
  2. Für einige erste Pakete überprüfen Sie die Ziel-MAC-Adresse in Ihrem Skript und überprüfen Sie es dann nicht mehr; d. h. die Korrektheit des Pakets zu Beginn des Schnüffelns prüfen, um die instabile Phase von scapy zu durchlaufen, und sich dann auf scapy verlassen, um die unerwünschten Pakete zu filtern.
+0

Sicher, die Aktualisierung scheint das Ding zu reparieren – Cukic0d

1

Installation tcpdump löste das Problem für mich - jetzt die Filter auf sniff arbeiten

1

In meinem Fall 2.3.3dev Upgrade (Github-Version), fixierte es

Verwandte Themen