ferramenta para dividir arquivos pcap por conexão TCP? [fechadas]

16

Existe uma ferramenta para dividir um arquivo de captura de pacotes (em formato pcap) em arquivos separados para cada conexão TCP? (além de um shell script caseiro que provavelmente precisa ser executado duas vezes durante a captura ...). Algo como o 'fluxo de TCP' do wireshark, mas para a linha de comando (receio que o wireshark consuma uma grande quantidade de memória ao exibir uma captura de pacote de 700 MB)

Eu olhei tcpflow mas parece produzir arquivos muito maiores que os arquivos pcap originais e eles parece não estar no formato pcap.

    
por Andre Holzner 24.05.2011 / 10:32

6 respostas

9

Você também pode usar o PcapSplitter que faz parte do PcapPlusPlus package. Ele faz exatamente o que você precisa (que está dividindo arquivos pcap por conexão TCP ou UDP), é multi-plataforma e não tem um limite no número de conexões no arquivo original (então você pode usá-lo para dividir um grande arquivo pcap contendo milhares de conexões ou até mais). O link acima é para o código-fonte, mas se você quiser um binário compilado - aqui é um link para binários que fiz para várias plataformas

EDIT: aparentemente uma nova versão do PcapPlusPlus foi lançada e contém binários do PcapSplitter para muitas plataformas (Windows, Ubuntu 12.04 / 14.04, Mac OSX Mavericks / Yosemite / El Captian). Acho melhor usar esses binários do que o link fornecido anteriormente. Você pode encontrá-lo aqui

    
por 19.07.2016 / 21:36
10

Você pode usar tcpdump para extrair as partes do pcap que deseja ... suponha que esteja procurando pacotes em uma conexão de soquete entre o TCP / 55777 em um host e o TCP / 80 em outro. Seu arquivo de origem é bigfile.pcap , que é um sniffer dump de muitas sessões HTTP para o host em questão ...

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

Isso fará com que todos os pacotes entrem e saiam do TCP / 55777 em bigfile.pcap e copie-os para session.pcap .

    
por 24.05.2011 / 11:59
3

tcpflow é o que você quer - divide pcaps em um arquivo por sessão TCP

link

    
por 24.10.2011 / 18:33
3

Um pouco exagerado, mas usando tshark (enviado com wireshark ), você poderia fazer com 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

Que gera arquivos nomeados como 1509466312.202450000-10.0.0.1-58892-10.0.0.2-80.pcap (com base no primeiro pacote visto para cada conexão).

    
por 31.10.2017 / 18:02
2

Parece haver essa ferramenta que pode funcionar (eu não a usei pessoalmente)

link (baseado em janelas)

SplitCap is a free (as in beer) open source pcap file splitter. SplitCap splits one big pcap file into multiple files based on TCP and UDP sessions, one pcap file per session. SplitCap can also be used to split a pcap file into one pcap file per host-pair instead of session.

    
por 24.05.2011 / 11:12
1

inspirado em @sch, aqui está uma versão 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

o nome do arquivo será assim: stream number__time__source IP__port__destination IP__port.pcap

tr -d '\r' é para usuários do Windows, porque tshark na saída do Windows CR LF.

Editar :

esta solução com tshark é tão lenta mas segura. O SplitCap é super rápido, mas quando há um erro em algum pacote, ele falha, enquanto o tshark apenas informa sobre o erro, mas continua:

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

e finalmente há o PcapSplitter que também é super rápido mas precisa do driver winpcap, ele não funciona com o driver npcap no Windows.

Mas há uma solução para o SplitCap: usando pcapfix Eu posso consertar os pacotes corrompidos, então o SplitCap nunca trava de novo. e é isso que estou usando agora, porque tshark é tão lento em dividir.

e uma solução para o PcapSplitter que eu fiz foi injetar a dll do winpcap usando qualquer método, mas enquanto nós temos o SplitCap, por quê?

    
por 29.05.2018 / 01:06