Warum ist nicht die scapy-capturing-VLAN-tag-Informationen?
Habe ich mit meinem raspberry pi als sniffer, und haben beobachtet, einige interessante Unterschiede zwischen tcpdump und scapy. Ich sehe die folgenden:
- Traffic-Generator-Maschine, Linux-Box mit scapy:
sendp(Ether(dst='ff:ff:ff:ff:ff:ff',src="AA:00:00:00:00:00")/Dot1Q(vlan=10)/IP()/ICMP())
Raspberry Pi, ala 'tcpdump':
00:25:10.156830 aa:00:00:00:00:00 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100),length 60: vlan 10, p 0, ethertype IPv4, localhost > localhost: ICMP echo request, id 0, seq 0, length 8
Rasperry Pi, über "scapy':
>>> pkt[0].show()
###[ Ethernet ]###
dst= ff:ff:ff:ff:ff:ff
src= aa:00:00:00:00:00
type= 0x800
###[ IP ]###
version= 4L
ihl= 5L
tos= 0x0
len=28
id= 1
flags=
frag= 0L
ttl= 64
proto= icmp
chksum= 0x7cde
src= 127.0.0.1
dst= 127.0.0.1
\options\
###[ ICMP ]###
type= echo-request
code= 0
chksum= 0xf7ff
id= 0x0
seq= 0x0
###[ Padding ]###
load= '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' None
Selbst wenn ich versuche:
>>> Dot1Q in pkt[0]
False
Weiß jemand, warum scapy nicht in der Lage ist zu erfassen (Parsen?) die vlan-frame, aber tcpdump sieht es in Ordnung ?
(PS ich habe auch geschnüffelt, mit scapy und exportiert eine pcap-Datei, und Lesen Sie dann die pcap-Datei mit tcpdump... die vlan-tags sind Weg... verschwunden... )
=======================
Für Interessierte, mein workaround für jetzt, ist die Verwendung tcpdump-Aufzeichnung in eine pcap-Datei, und verwenden Sie dann rdpcap() in scapy zum laden der Daten, so kann ich mit scapy leistungsstarke Analyse-Funktionen zu erkunden, das erfassen - dies führt zu einer Schicht-caching, und eine böse-system-Aufruf in meinem Programm, aber bringt mich zuverlässig vlan-Informationen...
=======================
Basierend auf RyPeck Antwort und GuyHarris Ratschläge, ich habe jetzt eine viel bessere Lösung:
a) Mit http://sourceforge.net/projects/pylibpcap/
import pcap
conf.use_pcap=True
b) Mit pcappy - was kann installiert werden mit: pip install pcappy
import pcappy as pcap
conf.use_pcap=True
Nun scapy zeigt die gleiche vlan-Informationen wie tcpdump, mit allen, die die große Analyse-Funktionen intakt!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser war vor kurzem eine Diskussion, in der Scapy-mailing-Liste hier.
Dies erklärt, warum die VLAN-Schicht verschwindet. Nichts zu tun in dieser Zeit, außer in einem möglichen feature-Anfrage/ticket. Fühlen Sie sich frei, um eine zu erstellen über die Scapy BitBucket.
@GuyHarris bietet eine andere mögliche Lösung, daß er, genannten feature im tcpdump-fügen Sie die Unterstützung für Scapy, dies würde gelten für Sie, wenn Ihr Scapy-installation verwendet libpcap capture-Pakete.
Habe ich versucht zu tun, was Sie gesagt haben, aber es hat nicht funktioniert. 'conf.L2listen 'noch verwendet "PF_PACKETS' anstelle von libpcap. Ich begann, mich in den code und festgestellt, dass 'conf.use_pcap' verarbeitet wird nur in der 'pcapdnet' - Modul. Das bedeutet, dass wenn Sie nicht importieren, 'conf.use_pcap' verworfen, und 'conf.L2listen' bleibt 'PF_PACKETS' anstelle der änderung zu 'L2pcapListenSocket' (das ist die Buchse, der an libpcap).
die Lösung ist einfach:
stellen Sie sicher, dass Sie das Modul importieren, NACHDEM Sie die Konfiguration ändern, sonst funktioniert es nicht.
Sie können überprüfen, dass es funktioniert, wenn man sich anschaut:
und der Wert ist:
es hat nicht funktioniert, wenn der Wert: