Sto cercando di analizzare tramite un file pcap in python. Il mio obiettivo è essere in grado di estrarre il tipo di file TCP o UDP che è e il momento in cui iniziano/finiscono. Qualcuno ha qualche consiglio in alcuni pacchetti potrebbe essere utile da usare e la documentazione per loro o un consiglio in generale per scriverlo?Analisi di un file pcap in python
risposta
Si consiglia di iniziare con scapy.
Vorrei usare python-dpkt. Ecco la documentazione: http://www.commercialventvac.com/dpkt.html
Questo è tutto ciò che so come fare anche se dispiaciuto.
#!/usr/local/bin/python2.7
import dpkt
counter=0
ipcounter=0
tcpcounter=0
udpcounter=0
filename='sampledata.pcap'
for ts, pkt in dpkt.pcap.Reader(open(filename,'r')):
counter+=1
eth=dpkt.ethernet.Ethernet(pkt)
if eth.type!=dpkt.ethernet.ETH_TYPE_IP:
continue
ip=eth.data
ipcounter+=1
if ip.p==dpkt.ip.IP_PROTO_TCP:
tcpcounter+=1
if ip.p==dpkt.ip.IP_PROTO_UDP:
udpcounter+=1
print "Total number of packets in the pcap file: ", counter
print "Total number of ip packets: ", ipcounter
print "Total number of tcp packets: ", tcpcounter
print "Total number of udp packets: ", udpcounter
Aggiornamento:
Nota che dpkt non sembra in grado di decodificare i flussi, ad es. da una named fifo pipe a cui tcpdump sta scrivendo. Errori sull'essere incapace di cercare (non c'è comunque bisogno di cercare in un papà ...). – Luc
Nessuna versione python 3 è disponibile di dpkt (almeno nei repository Debian), ma il porting sembra facile: http://stackoverflow.com/a/27480361/1201863 – Luc
Per evitare un'eccezione: 'UnicodeDecodeError: 'utf-8 'il codec non può decodificare il byte 0xd4 in posizione 0: byte di continuazione non valido' abbiamo bisogno di usare la modalità binaria per il file aperto: 'dpkt.pcap.Reader (aperto (nomefile, 'rb'))' – korst1k
C'è, anche, versione più recente di Scapy compatibile con python3 con le caratteristiche aggiunte (http://github.com/phaethon/ Scapy). È possibile utilizzare anche pycapfile –
. Link: https://pypi.python.org/pypi/pypcapfile – Pawel
pypcapfile o pycapfile - non ha funzionato sul mio file tcpdump: ethernet da 55: 32: fd: 21: 4d: 7c a 00: 00: 02: 00 : 00: 00 tipo sconosciuto ethernet da 9d: a9: 41: cd: bb: ca a 00: 04: 02: 00: 00: 00 tipo sconosciuto –