使用 tshark 將 .pcap 檔案轉換為 .txt

使用 tshark 將 .pcap 檔案轉換為 .txt

我正在嘗試將 tcpdump 生成的 .pcap 封包擷取檔案轉換為文字格式。每當我嘗試轉換 .pcap 文件,甚至只是將 tcpdump 的標準輸出端口“>”到文字文件時,我都會收到權限錯誤。

方法一:

使用生成資料包擷取文件

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

嘗試使用轉換 .pcap 文件

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

但我收到這樣的權限被拒絕錯誤:

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

方法二:

使用生成資料包擷取文件

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

我收到類似的權限被拒絕錯誤:

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

由於我以 sudo 身份運行這兩個命令,因此我認為權限不是問題。

我透過執行以下命令禁用了 tcpdump 的 apparmor:

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

誰能解釋為什麼會發生這種情況?或者建議一種更好的方法來為 tcpdump 產生可讀的文字輸出?

答案1

問題是命令的重定向部分是以您而不是 root 身份執行的。
因此,如果您想保持目標目錄不變,那麼您需要讓該部分也以 root 身分運行。或者,您可以將目標目錄設定為您具有寫入權限的目錄。

顯示為什麼它不起作用的範例(注意結果檔案的權限):

$ 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

可行的方法範例(再次注意產生檔案的權限):

$ 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
$

另一種方法的範例可以工作,但也會噴射到終端,這可能是不可取的:

$ 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

注意:我在這裡使用 tcpdump 而不是 tshark,但這只是因為我沒有安裝 tshark。

相關內容