2013-09-04 7 views
12

Wenn ich einen Ethernet-Frame ohne oberen Schichten Nutzlast und senden es an der Schicht zwei mit sendp() zu erzeugen, dann ff tatsächlich nutzt I erhalten die "Mac address to reach destination not found. Using broadcast." Warnung und Rahmen zu verdrahten gestellt: ff: ff: ff: ff: ff als eine Ziel-MAC-Adresse. Warum ist das so? Sollte der Scapy nicht genau den Rahmen schicken, den ich gebaut habe?Verstehen der Scapy "Mac-Adresse zum Erreichen des Ziels nicht gefunden. Verwenden von Broadcast." Warn

Mein gestaltetes Paket kann unten gesehen werden:

>>> ls(x) 
dst  : DestMACField   = '01:00:0c:cc:cc:cc' (None) 
src  : SourceMACField  = '00:11:22:33:44:55' (None) 
type  : XShortEnumField  = 0    (0) 
>>> sendp(x, iface="eth0") 
WARNING: Mac address to reach destination not found. Using broadcast. 
. 
Sent 1 packets. 
>>> 
+0

ich nicht wiedergeben kann. Können Sie die Zeile, die Sie zum Erstellen des Pakets verwendet haben, Ihre scapy-Version und die Plattform, auf der Sie arbeiten, posten? – nmichaels

Antwort

8

Die meisten Menschen dieses Problem zu begegnen falsch send() (oder sr(), sr1(), srloop()) verwenden statt sendp() (oder srp(), srp1(), srploop()). Für die Aufzeichnung dienen die "ohne " -Funktionen wie send() zum Senden von Schicht-3-Paketen (send(IP())), während die "mit-p" -Varianten zum Senden von Schicht-2-Paketen (sendp(Ether()/IP())) sind.

Wenn Sie x definieren, wie ich unten zu tun und benutzen sendp() (und nicht send()) und Sie immer noch dieses Problem haben, dann sollten Sie versuchen, mit der neuesten Version aus dem Git-Repository des Projekts (siehe https://github.com/secdev/scapy).

Ich habe versucht:

>>> x = Ether(src='01:00:0c:cc:cc:cc', dst='00:11:22:33:44:55') 
>>> ls(x) 
dst  : DestMACField   = '00:11:22:33:44:55' (None) 
src  : SourceMACField  = '01:00:0c:cc:cc:cc' (None) 
type  : XShortEnumField  = 0    (0) 
>>> sendp(x, iface='eth0') 
. 
Sent 1 packets. 

Zur gleichen Zeit lief ich tcpdump:

# tcpdump -eni eth0 ether host 00:11:22:33:44:55 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 
12:33:47.774570 01:00:0c:cc:cc:cc > 00:11:22:33:44:55, 802.3, length 14: [|llc]