2013-09-04 17 views
12

Se si genera un frame Ethernet senza alcun payload degli strati superiori e lo si invia al secondo livello con sendp(), quindi ricevo l'avviso "Mac address to reach destination not found. Using broadcast." e il frame messo su wire utilizza effettivamente ff: ff: ff: ff: ff: ff as un indirizzo MAC di destinazione. Perché è così? Non dovrebbe lo Scapy inviare esattamente il frame che ho costruito?Capire lo Scapy "Indirizzo Mac per raggiungere la destinazione non trovata. Utilizzo della trasmissione". warning

Il mio pacchetto artigianale può essere visto sotto:

>>> 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

non riesco a riprodurre questo. Puoi pubblicare la riga che hai usato per creare il pacchetto, la tua versione di scapy e la piattaforma su cui stai lavorando? – nmichaels

risposta

8

maggior parte delle persone che incontrano questo problema sono in modo non corretto utilizzando send() (o sr(), sr1(), srloop()) invece di sendp() (o srp(), srp1(), srploop()). Per la cronaca, le funzioni "senza- p" come send() sono per l'invio di pacchetti di livello 3 (send(IP())) mentre le varianti "with- p" sono per l'invio di pacchetti di livello 2 (sendp(Ether()/IP())).

se si definisce x come faccio io qui sotto e usate sendp() (e non send()) e avete ancora il problema, probabilmente si dovrebbe provare con l'ultima versione dal repository git del progetto (vedi https://github.com/secdev/scapy).

ho provato:

>>> 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. 

Allo stesso tempo, stavo correndo 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] 
Problemi correlati