Por que o arquivo de saída do tcpdump está vazio?

2

No meu Red Hat Enterprise Linux Server release 6.5 ao salvar uma captura tcpdump em um arquivo com a opção -w , o arquivo resultante está vazio:

[root@plop ~]# tcpdump -n -w tcpdump.cap
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C217 packets captured
217 packets received by filter
0 packets dropped by kernel
[root@plop ~]# cat tcpdump.cap
[root@plop ~]# ll tcpdump.cap
-rw-r-----. 1 root root 0 Aug 25 14:13 tcpdump.cap
[root@plop ~]#

Eu também tentei redirecionar a saída do comando com > e &> , mas sempre recebo um arquivo vazio ...

Qual poderia ser o motivo disso?

NB:

  • Eu posso ver uma saída correta no terminal (muitos pacotes) quando não estou redirecionando para um arquivo
  • Eu fiz o mesmo com thsark e funcionou como esperado (o arquivo de saída estava correto)
  • A constatação de tcpdump é tcpdump version 4.1-PRE-CVS_2012_02_01
  • A versão de libpcap é libpcap version 1.4.0
  • Eu tentei com a opção -U , isso não resolveu o problema.
por fiddler 25.08.2015 / 11:56

3 respostas

2

Há um problema conhecido com tcpdump , em que, se falhar ao gravar no arquivo de saída (por exemplo, permissões ou disco cheio), ele não relatará esse fato.

Nesse caso, como o arquivo de saída está sendo criado ok, mas nenhum dado está sendo gravado, o sistema de arquivos provavelmente está cheio.

Pode ser confirmado executando novamente o strace e observando a falha na gravação.

A solução é limpar o espaço no sistema de arquivos relevante ou apontar tcpdump em um sistema de arquivos onde existe espaço.

    
por 25.08.2015 / 14:53
3

Tente adicionar a opção -U .

Da página do manual:

   -U
   --packet-buffered
          If  the  -w option is not specified, make the printed packet output ''packet-buffered''; i.e., as the description of the contents of each packet is printed, it will be written to the standard
          output, rather than, when not writing to a terminal, being written only when the output buffer fills.

      If the -w option is specified, make the saved raw packet output ''packet-buffered''; i.e., as each packet is saved, it will be written to the output file, rather than being written only  when
      the output buffer fills.

      The -U flag will not be supported if tcpdump was built with an older version of libpcap that lacks the pcap_dump_flush() function.
    
por 25.08.2015 / 12:34
-1

Certifique-se de que tcpdump esteja assistindo à interface de rede correta. Ou use -i any para assistir em qualquer interface.

    
por 16.10.2015 / 19:36

Tags