Преобразование файлов.pcap в.txt с использованием tshark
Я пытаюсь преобразовать мои файлы захвата пакета.pcap, сгенерированные tcpdump, в текстовый формат. Я получаю ошибку разрешения всякий раз, когда пытаюсь преобразовать файл.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, я решил, что разрешения не будут проблемой.
Я отключил apparmor для tcpdump, выполнив эту команду:
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.