Convertendo arquivos .pcap para .txt usando tshark

Convertendo arquivos .pcap para .txt usando tshark

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 apenas portar ">" o stdout do tcpdump para um arquivo de texto.

Método 1:

gerar arquivos de captura de pacotes usando

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

tente converter o arquivo .pcap usando

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

Mas recebo um erro de permissão negada como este:

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

Método 2:

gerar arquivos de captura de pacotes usando

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

Recebo um erro semelhante de permissão negada:

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

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

Desativei o apparmor para 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 tcpdump?

Responder1

O problema é que a parte de redirecionamento de seus comandos é executada como você e não como root.
Portanto, se você quiser manter seu diretório de destino como está, precisará fazer com que essa parte seja executada também como root. Alternativamente, você pode tornar seu diretório de destino um para o qual você tenha 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 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 vomita no 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: usei o tcpdump aqui em vez do tshark, mas apenas porque não tenho o tshark instalado.

informação relacionada