使用 tshark 将 .pcap 文件转换为 .txt

使用 tshark 将 .pcap 文件转换为 .txt

我正在尝试将 tcpdump 生成的 .pcap 数据包捕获文件转换为文本格式。每当我尝试转换 .pcap 文件或甚至只是将 tcpdump 的标准输出“>”移植到文本文件时,都会收到权限错误。

方法 1:

使用生成数据包捕获文件

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

方法 2:

使用生成数据包捕获文件

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。

相关内容