2016-04-13 11 views
0

Я пытаюсь применить фильтр Wireshark к каталогу .cap файлов, созданных tcpdump. У меня около 1000 файлов .cap, ожидающих фильтрации (мы намеренно захватываем без фильтров, чтобы убедиться, что у нас есть все данные, которые нам нужны, если наша гипотеза не закончится). Я не могу найти ссылки на людей, использующих tshark, чтобы рекурсивно прочитать файл, применить фильтр, записать новый файл .cap, а затем перейти к следующему, прополоскать, повторить.Рекурсивно Фильтровать каталог .cap/.pcap Файлы С tshark

Мои настройки:

Tcpdump демпинг трафика и прокатки в новый файл, как только файл достигает 1GB (да, огромный для pcaps). Просто для справки, это tcpdump команды Я использую:

sudo tcpdump -q -i <INTERFACE> -w path/to/capfile.cap -C 1000 -Z root 

я могу использовать tshark чтобы применить фильтр к данным .cap файлу и иметь его выход на новый .cap файл без проблем с помощью следующей команды:

tshark -R <FILTER> -r in.cap0001 -w out.cap0001 

главная страница состояния Tshark,

"-r ... можно использовать именованные каналы или стандартного ввода (-) здесь ..."

, но я отнюдь не эксперт с именем pipes, stdin, при этом я не программист.

Может ли кто-нибудь указать мне в правильном направлении? Благодаря!

+0

Если мой ответ сработал для вас, [отметьте его как принятый] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Если это не так, добавьте комментарий, требующий уточнений или исправлений, если это необходимо (я думаю, вы можете только прокомментировать свой вопрос в соответствии с вашей текущей репутацией, но не беспокойтесь, я прочитаю его). – Nacho

+0

Спасибо, Начо, очень ценим. Единственное, что мне пришлось изменить, это «grep» \ .cap $ ''to' grep' \ .cap'' – hyraxai

+0

Добро пожаловать. Это означает, что файлы не заканчиваются точно «.cap», я предполагаю '.cap0001' через' .cap1000' тогда, если в этом случае да, удаление этого '' 'должно это сделать. Ура! – Nacho

ответ

0

Я думаю, вы можете достичь этого напрямую с помощью некоторых команд оболочки.

Попробуйте следующее, перейдите в каталог, где у вас есть ваши снимки и выполнить следующую команду:

ls | grep '\.cap$' | while read f; do (tshark -R <FILTER> -r $f -w mod_$f); done

Это будет производить новые файлы .cap с желаемым применением фильтра. Излишне говорить, что эта команда может быть правильно настроена в соответствии с вашими личными потребностями, но это хорошая отправная точка.


команды Объяснение:

ls: Список всех файлов, содержащихся в текущем каталоге.

|: Труба, стандартный выход команды левой стороны используется как стандартный ввод команды правой руки.

grep '\.cap$': Обеспечивает работу только с файлами, заканчивающимися .cap. В соответствии с Вашим комментарием, обратите внимание, что если файлы не заканчиваются именно с .cap этот фильтр должен быть изменен на grep '\.cap' так $ говорит grep, что линия заканчивается все, что предшествует ему (в данном примере «.cap» строки ).

while read f: Считывает каждую строку, возвращаемую предыдущими командами.

do (<COMMAND>): Для каждой строки, прочитанной, это do es КОМАНДА, которая в этом случае является вашей командой tshark.

done: Часть синтаксиса команды while.


Пример выполнения команды:

# ls 
fake.cap2 non_cap_file.txt out2.cap out.cap 

# ls | grep '\.cap$' 
out2.cap 
out.cap 

Следующая единственная линия, которая вам на самом деле нужно выполнить, а остальные здесь только для иллюстрации содержимого папки до и после выполнения команды.

# ls | grep '\.cap$' | while read f; do (tshark -R <FILTER> -r $f -w mod_$f); done 
Running as user "root" and group "root". This could be dangerous. 
Running as user "root" and group "root". This could be dangerous. 

На стороне записки, я получил этот корень предупреждение, потому что я сделал это быстрый тест с использованием корневого пользователя ...

# ls 
fake.cap2 mod_out2.cap mod_out.cap non_cap_file.txt out2.cap out.cap 

# ls | grep '\.cap$' 
mod_out2.cap 
mod_out.cap 
out2.cap 
out.cap 

Как вы можете видеть, что захватывает все .cap файл, применяется фильтр указан и записывает новый файл mod _ *. cap.