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.