Conversión de archivos .pcap a .txt usando tshark

Conversión de archivos .pcap a .txt usando tshark

Estoy intentando convertir mis archivos de captura de paquetes .pcap generados por tcpdump a un formato de texto. Recibo un error de permiso cada vez que intento convertir el archivo .pcap o incluso simplemente transferir ">" la salida estándar de tcpdump a un archivo de texto.

Método 1:

generar archivos de captura de paquetes usando

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

intente convertir el archivo .pcap usando

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

Pero recibo un error de permiso denegado como este:

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

Método 2:

generar archivos de captura de paquetes usando

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

Recibo un error de permiso denegado similar:

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

Como estoy ejecutando ambos comandos como sudo, pensé que los permisos no serían un problema.

He desactivado la apariencia de tcpdump ejecutando este comando:

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

¿Alguien puede arrojar algo de luz sobre por qué sucede esto? ¿O sugerir una mejor manera de generar resultados de texto legibles para tcpdump?

Respuesta1

El problema es que la parte de redirección de sus comandos se ejecuta como usted y no como root.
Entonces, si desea mantener su directorio de destino como está, entonces necesita hacer que esa parte se ejecute también como root. Alternativamente, puede hacer que su directorio de destino sea uno para el que tenga acceso de escritura.

Ejemplo que muestra por qué no funciona (observe los permisos en el archivo 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

Ejemplo de un método que funcionará (nuevamente, observe los permisos en el archivo 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
$

Ejemplo de otro método que funcionará, pero que también arroja al terminal, lo que puede no ser deseable:

$ 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: He usado tcpdump aquí en lugar de tshark, pero sólo porque no tengo tshark instalado.

información relacionada