2015-05-07 20 views
8

Sembra che la funzione di sniff non funzioni correttamente.il filtro della funzione sniff in scapy non funziona correttamente

i m eseguendo lo sniff con il seguente filtro

a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010") 

Ma qualche tempo il sniff prendere un UDP pacchetto come questo:

>>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010") 
>>> a 
<Sniffed: TCP:0 UDP:1 ICMP:0 Other:0> 

E qualche tempo il sniff cattura un pacchetto TCP con sbagliato porte:

>>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010") 
>>> a 
<Sniffed: TCP:1 UDP:0 ICMP:0 Other:0> 
>>> a[0] 
<Ether dst=00:26:55:cb:3b:10 src=00:22:64:55:c8:89 type=0x800 |<IP version=4L ihl=5L tos=0x10 len=92 id=8683 flags=DF frag=0L ttl=64 proto=tcp chksum=0x9484 src=192.168.1.71 dst=192.168.1.133 options=[] |<TCP sport=ssh dport=1874 seq=350107599 ack=2484345720 dataofs=5L reserved=0L flags=PA window=254 chksum=0x846b urgptr=0 options=[] |<Raw load="yn\x01\x9d\xfca\xc9V-8\x18|\xc4\t\xf1\xc4\xd8\xd3\xc6\x95E\x19'h\xc0\x89\xf1\x08g\xa3\x9a\xa9\xf51RF\xc2\x1f\xe5a\xac\x83M\xc9\x0b\x80\x85\x1b\xcf\xb6f\xcc" |>>>> 

E qualche tempo il sniff prendere un pacchetto di ARP come questo:

>>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010") 
>>> a 
<Sniffed: TCP:0 UDP:0 ICMP:0 Other:1> 
>>> a[0] 
<Ether dst=ff:ff:ff:ff:ff:ff src=00:22:07:2c:53:97 type=0x806 |<ARP hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=who-has hwsrc=00:22:07:2c:53:97 psrc=192.168.1.178 hwdst=ff:ff:ff:ff:ff:ff pdst=192.168.1.179 |<Padding load='\x00\x07\x00\x00\x00\x00\x00\x00p\x00\x00\x00\x00\x00\x01\x14\x00\x00' |>>> 

mi sto perdendo qualcosa nel mio filtro? Come posso evitare questo problema?

+0

Wild guess: si dispone di interfacce di rete insolite sulla macchina in cui si esegue Scapy? Sto pensando lungo le linee delle interfacce di virtual machine (come Virtualbox o VMWare), tun/tap o così. Funziona se si aggiunge 'iface = eth0' (o qualunque altra cosa venga chiamata l'interfaccia Ethernet primaria) all'elenco dei parametri' sniff'? Nota che alcuni pacchetti TCP possono essere classificati in 'Altro', quindi usa' a.summary() 'invece di' a' per ispezionare il risultato. – Wintermute

+0

@Wintermute Ho usato 'iface =" eth0 "', ma ho sempre avuto gli stessi problemi – MOHAMED

+1

Hai installato 'tcpdump'? Inoltre, 'scapy -d' fornisce qualche avvertimento? – Wintermute

risposta

-1

Ho avuto lo stesso problema o simile - il filtro sniff non ha funzionato.

L'installazione di tcpdump ha risolto il problema per me.

0

Ho avuto lo stesso problema con Centos su VM. Ho usato l'host ip per il filtro invece dell'host. Sembra che abbia risolto il problema nel mio caso.

Filtro sbagliato #

>>> packets = sniff (filter = "host 176.96.135.80", count =2, iface = "eth0", timeout =10) 
>>> packets.summary() 
Ether/IP/UDP 172.7.198.136:netbios_ns > 172.7.199.255:netbios_ns/NBNSQueryRequest 
Ether/IP/TCP 176.96.135.80:53527 > 172.7.19.58:ssh A/Padding 

Fix #

>>> packets = sniff (filter = "ip host 176.96.135.80", count =2, iface = "eth0", timeout =10) 

non ha avuto problemi dopo questo.