tcpdump vários pcaps w / xargs

1

Estou tentando enviar vários pcaps em um loop xargs para tcpdump-los em um único arquivo. Estes são arquivos PCAP de 1 GB da Timemachine de Bro.

Existem exemplos on-line, mas o único que posso fazer é mergulhar os arquivos antes de processá-los, o que exige muito do processador.

Eu tentei ...

ls class_all_1447887* | xargs -t -I file tcpdump -nnr file -w ~/test.cap "src 127.1.0.1"

... mas recriaria test.cap para cada loop em vez de adicionar como foi.

Existe uma maneira de fazer isso sem criar primeiro um arquivo de 15GB para realizar sessões?

    
por user112802 24.11.2015 / 06:42

2 respostas

1

Em vez de ter tcpdump criar um novo arquivo a cada vez, deixe tcpdump gravar na saída padrão e redirecione a saída de todo o comando para ~/test.cap .

Assim:

ls class_all_1447887* |
xargs -t -I file tcpdump -nnr file "src 127.1.0.1" > ~/test.cap

Ou você pode escrever um arquivo diferente para cada arquivo de entrada:

mkdir ~/test.cap.d
ls class_all_1447887* |
xargs -t -I file tcpdump -nnr file -w ~/test.cap.d/file.tcpd "src 127.1.0.1"

Não estou familiarizado com os requisitos de entrada do NetMiner e do Wireshark, nem sobre a saída de tcpdump .

    
por 24.11.2015 / 07:11
1

I am attempting to send multiple pcaps into an xargs loop in order to tcpdump them into a single file.

O tcpdump não suporta a fusão de arquivos pcap.

o mergecap faz isso, mas se você não quiser usá-lo porque ele usa muita CPU, e se

  1. os arquivos têm o mesmo tipo de cabeçalho da camada de link (por exemplo, Ethernet) e o mesmo comprimento de instantâneo;
  2. você só quer concatenar os arquivos, porque o arquivo N + 1'st tem pacotes que vêm depois dos pacotes no enésimo arquivo, para todos os valores de N;

você precisará tentar algo semelhante à solução na seção "Exemplos de manipulação de cabeçalho" do artigo que encontrou. Esse exemplo significa que você deve tratar o primeiro arquivo sendo concatenado de forma diferente de todos os outros arquivos, já que você estará removendo o cabeçalho do arquivo de todos os outros arquivos, mas não do primeiro arquivo.

Aqui está um script que deve fazer isso:

#! /bin/sh
first_file=yes
for i in class_all_1447887*
do
    if [ "$first_file" = "no" ]
    then
        #
        # Strip off file header from tcpdump's output.
        #
        tcpdump -r "$i" -w - "src 127.1.0.1" | \
            (dd of=/dev/null bs=24 count=1; cat)
    else
        tcpdump -r "$i" -w - "src 127.1.0.1"
        first_file=no
    fi
done > test.cap
    
por 24.11.2015 / 21:16

Tags