strumento per dividere i file pcap tramite connessione TCP? [chiuso]


16

Esiste uno strumento per dividere un file di acquisizione di pacchetti (in formato pcap) in file separati per ogni connessione TCP? (diverso da uno script shell sviluppato in casa che probabilmente deve essere eseguito due volte durante l'acquisizione ...). Qualcosa come il 'follow TCP stream' di WireShark, ma per la riga di comando (temo che WireShark consumerà una grande quantità di memoria quando si visualizza un'acquisizione di pacchetti da 700 MB)

Ho esaminato tcpflow ma sembra produrre file molto più grandi dei file pcap originali e sembrano non essere in formato pcap.


I file risultanti da tcpflow non sono pcaps, sono i payload tcp effettivi dei flussi tcp.
chris,

Risposte:


9

Puoi anche usare PcapSplitter che fa parte del pacchetto PcapPlusPlus . Fa esattamente ciò di cui hai bisogno (che sta dividendo i file pcap con una connessione TCP o UDP), è multipiattaforma e non ha un limite al numero di connessioni nel file originale (quindi puoi usarlo per dividere un grande file pcap contenente migliaia di connessioni o anche di più). Il link sopra è per il codice sorgente, ma se vuoi un binario compilato - ecco un link per i binari che ho creato per diverse piattaforme

EDIT: apparentemente è stata rilasciata una nuova versione di PcapPlusPlus e contiene binari PcapSplitter per un bel numero di piattaforme (Windows, Ubuntu 12.04 / 14.04, Mac OSX Mavericks / Yosemite / El Captian). Penso che sia meglio usare questi binari rispetto al link che ho precedentemente fornito. Puoi trovarlo qui


10

Puoi usare tcpdumpper estrarre le porzioni del pcap che desideri ... supponi di cercare pacchetti in una connessione socket tra TCP / 55777 su un host e TCP / 80 su un altro. Il tuo file sorgente è bigfile.pcap, che è un dump sniffer di molte sessioni HTTP per l'host web in questione ...

tcpdump -r bigfile.pcap -w session.pcap -s0 tcp and port 55777

Ciò estrarrà tutti i pacchetti che vanno da e verso TCP / 55777 bigfile.pcape li copia in session.pcap.


Ha -s0qualche effetto se usato insieme a -r?
Kasperd,

4

Un po 'eccessivo, ma usando tshark(spedito con wireshark), potresti fare con zsh:

file=file.pcap
tshark -Tfields -e tcp.stream \
                -e frame.time_epoch \
                -e ip.src \
                -e tcp.srcport \
                -e ip.dst \
                -e tcp.dstport -r $file |
  sort -snu |
  while read -A f; do 
    tshark -r $file -2R "tcp.stream == $f[1]" -w ${(j:-:)f[2,-1]}.pcap
  done

Che genera file di nome simile 1509466312.202450000-10.0.0.1-58892-10.0.0.2-80.pcap(basato sul primo pacchetto visto per ogni connessione).



2

Sembra che ci sia questo strumento che potrebbe funzionare (non l'ho usato personalmente)

http://www.netresec.com/?page=SplitCap (basato su Windows)

SplitCap è uno splitter di file pcap open source gratuito (come nella birra). SplitCap divide un grande file pcap in più file basati su sessioni TCP e UDP, un file pcap per sessione. SplitCap può anche essere usato per dividere un file pcap in un file pcap per coppia host anziché sessione.


1

ispirato da @sch ecco una versione bash:

file=cap.pcap
$tshark -Tfields -e tcp.stream \
                -e frame.time_epoch \
                -e ip.src \
                -e tcp.srcport \
                -e ip.dst \
                -e tcp.dstport -r $file |
  sort -snu |
  while read -a f; do 
  [[ "${f[5]}" ]] || continue  # sometimes there is no stream number ex. UDP
  fileout=$(echo ${f[0]}__${f[1]}__${f[2]}__${f[3]}__${f[4]}__${f[5]} | tr -d '\r'  )
    $tshark -r $file -2R "tcp.stream == ${f[0]}" -w "$fileout.pcap"
  done
read

il nome del file sarà così: stream number__time__source IP__port__destination IP__port.pcap

tr -d '\r' è per gli utenti di windows, perché tshark in output di Windows CR LF.

Modifica :

questa soluzione con tshark è così lenta ma sicura. SplitCap è super veloce ma quando si verifica un errore in alcuni pacchetti si blocca, mentre tshark ti informa solo sull'errore ma continua:

tshark: The file "cap.pcap" appears to have been cut short in the middle of a packet.

e infine c'è PcapSplitter che è anche super veloce ma ha bisogno del driver winpcap, non funziona con il driver npcap in Windows.

Ma esiste una soluzione a SplitCap: usando pcapfix posso correggere i pacchetti corrotti quindi SplitCap non si blocca mai più. e questo è quello che sto usando ora, perché tshark è così lento nella divisione.

e una soluzione a PcapSplitter che ho fatto è stata iniettare la dll winpcap usando qualsiasi metodo ma mentre abbiamo SplitCap perché farlo?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.