Ich versuche, meine von tcpdump generierten .pcap-Paketerfassungsdateien in ein Textformat zu konvertieren. Ich erhalte einen Berechtigungsfehler, wenn ich versuche, die .pcap-Datei oder auch nur den Port ">" der Standardausgabe von tcpdump in eine Textdatei zu konvertieren.
Methode 1:
Generieren Sie Paketerfassungsdateien mit
sudo tcpdump -i wlan0 -w /var/log/tcpdump/tcpdump-log-06-03-2015.pcap
Versuchen Sie, die .pcap-Datei zu konvertieren mit
sudo tshark -V -r tcpdump-log-06-03-2015.pcap > tcpdump-log-06-03-2015.txt
Ich erhalte jedoch die Fehlermeldung „Zugriff verweigert“ wie diese:
bash: tcpdump-log-06-03-2015.txt: Permission denied
Methode 2:
Generieren Sie Paketerfassungsdateien mit
sudo tcpdump -i wlan0 > /var/log/tcpdump/tcpdump-log-06-03-2015.txt
Ich erhalte einen ähnlichen „Berechtigung verweigert“-Fehler:
bash: /var/log/tcpdump/tcpdump-log-06-03-2015.txt: Permission denied
Da ich beide Befehle als sudo ausführe, ging ich davon aus, dass die Berechtigungen kein Problem darstellen würden.
Ich habe Apparmor für TCPdump deaktiviert, indem ich diesen Befehl ausgeführt habe:
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.tcpdump
Kann jemand Licht ins Dunkel bringen, warum das passiert? Oder einen besseren Weg vorschlagen, um lesbare Textausgabe für tcpdump zu generieren?
Antwort1
Das Problem besteht darin, dass der Umleitungsteil Ihrer Befehle als Sie und nicht als Root ausgeführt wird.
Wenn Sie also Ihr Zielverzeichnis so beibehalten möchten, wie es ist, müssen Sie diesen Teil auch als Root ausführen. Alternativ können Sie Ihr Zielverzeichnis so einrichten, dass Sie Schreibzugriff darauf haben.
Beispiel, das zeigt, warum es nicht funktioniert (beachten Sie die Berechtigungen für die resultierende Datei):
$ 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
Beispiel einer Methode, die funktioniert (beachten Sie auch hier die Berechtigungen für die resultierende Datei):
$ 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
$
Beispiel einer anderen Methode, die funktioniert, aber auch etwas auf dem Terminal ausgibt, was unerwünscht sein kann:
$ 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
Hinweis: Ich habe hier tcpdump anstelle von tshark verwendet, aber nur, weil ich tshark nicht installiert habe.