Como você executa continuamente o Wireshark sem consumir toda a minha memória RAM?

2

Eu preciso rodar o Wireshark a noite toda para capturar pacotes de um determinado endereço IP. Percebo que quanto mais tempo o Wireshark é executado, mais RAM ele ocupa porque armazena todos os pacotes encontrados durante a execução. Existem 3 soluções possíveis para mim, mas não encontrei nenhuma resposta on-line:

  1. Configure o Wireshark para salvar apenas na RAM os pacotes que aparecem no filtro (não em TODOS os pacotes). Não tenho certeza se isso é possível.
  2. Configure o Wireshark para salvar automaticamente os pacotes em um arquivo a cada hora e liberar sua memória após o armazenamento no arquivo.
  3. Use uma alternativa ao Wireshark que foi projetada para funcionar por um tempo.
por Bryan 11.03.2016 / 01:06

2 respostas

2

Para ambientes Windows (como o meu, onde é importante instalar o wireshark em um servidor), desde que o Win7 / 2008R2 foi construído na captura de pacotes disponível.

Isto irá capturar tudo até que você diga para parar: netsh trace start capture=yes persistent=yes tracefile=c:\temp\results.etl

Monitore o rastreamento: netsh trace show status

Pare o rastreamento: netsh trace stop

Ele suporta tudo de sempre: filtragem, criação de log circular e até mesmo persistência nas reinicializações. Outra vantagem é a ajuda do comando: tente netsh trace ? ou netsh trace show ? Você precisa instalar o Microsoft Message Analyzer para exibir / exportar os resultados.

Parece que, para a sua situação, você configuraria o seguinte comando:

netsh trace start capture=yes persistent=yes tracefile=c:\temp\results.etl maxSize=500

Isso fornecerá registro em log circular com arquivos de 500 MB e persistirá durante as reinicializações.

    
por 11.03.2016 / 04:19
1

Eu sempre uso apenas tcpdump . O Wireshark pode abrir o arquivo de captura resultante mais tarde, mas se ele for grande, talvez você ainda precise dividi-lo com algo como editcap . Aqui estão alguns exemplos:

Capture todo o tráfego:

tcpdump -s 0 -n -w <filename>

Capture todo o tráfego, exceto o tráfego SSH (útil ao executar tcpdump em uma conexão SSH):

tcpdump -s 0 'port not 22' -n -w <filename>

Você precisa do parâmetro -s 0 para que tcpdump não imponha um limite por pacote.

Você pode não precisar de -n ; Eu sempre uso isso para que o Wireshark não perca tempo tentando resolver nomes. (Pode ser mais útil sem -w .)

    
por 11.03.2016 / 01:15