Convertendo arquivos .pcap para .txt usando tshark

0

Estou tentando converter meus arquivos de captura de pacotes .pcap gerados pelo tcpdump em um formato de texto. Estou recebendo um erro de permissão sempre que tento converter o arquivo .pcap ou até mesmo apenas a porta ">" o stdout do tcpdump em um arquivo de texto.

Método 1:

gera arquivos de captura de pacotes usando

sudo tcpdump -i wlan0 -w /var/log/tcpdump/tcpdump-log-06-03-2015.pcap

tenta converter o arquivo .pcap usando

sudo tshark -V -r tcpdump-log-06-03-2015.pcap > tcpdump-log-06-03-2015.txt

Mas recebo uma permissão negada como esta:

bash: tcpdump-log-06-03-2015.txt: Permission denied

Método 2:

gera arquivos de captura de pacotes usando

sudo tcpdump -i wlan0 > /var/log/tcpdump/tcpdump-log-06-03-2015.txt

Eu recebo um erro de permissão negada semelhante:

bash: /var/log/tcpdump/tcpdump-log-06-03-2015.txt: Permission denied

Como estou executando os dois comandos como sudo, percebi que as permissões não seriam um problema.

Eu desativei o apparmor para o tcpdump executando este comando:

sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.tcpdump

Alguém pode esclarecer por que isso está acontecendo? Ou sugerir uma maneira melhor de gerar saída de texto legível para o tcpdump?

    
por deusofnull 03.06.2015 / 00:42

1 resposta

1

O problema é que a parte de redirecionamento de seus comandos é executada como você e não como root.
Então, se você quiser manter seu diretório de destino como está, então você precisa obter essa parte para executar como root também. Como alternativa, você pode tornar seu diretório de destino o qual você tem acesso de gravação.

Exemplo mostrando porque não está funcionando (observe as permissões no arquivo resultante):

$ sudo tcpdump -n -tttt -r eth1-2015-04-16-17-01-35.bin > vvvbbb.txt
reading from file eth1-2015-04-16-17-01-35.bin, link-type EN10MB (Ethernet)
$ ls -l vvvbbb.txt
-rw-rw-r-- 1 doug doug 5418673 Jun  2 16:53 vvvbbb.txt

Exemplo de um método que funcionará (Novamente, observe as permissões no arquivo resultante):

$ sudo su
# tcpdump -n -tttt -r eth1-2015-04-16-17-01-35.bin >vvvbbb.txt
reading from file eth1-2015-04-16-17-01-35.bin, link-type EN10MB (Ethernet)
# ls -l vvvbbb.txt
-rw-r--r-- 1 root root 5418673 Jun  2 16:57 vvvbbb.txt
# exit
exit
$

Exemplo de outro método que funcionará, mas também se espalha para o terminal, o que pode ser indesejável:

$ sudo tcpdump -n -tttt -r eth1-2015-04-16-17-01-35.bin | sudo tee vvvbbb.txt
... delete tons of spew to terminal ...
$ ls -l vvv*.txt
-rw-r--r-- 1 root root 5418673 Jun  2 17:01 vvvbbb.txt

Nota: Eu usei o tcpdump aqui em vez de tshark, mas apenas porque não tenho o tshark instalado.

    
por Doug Smythies 03.06.2015 / 02:06