Извлечение потока TCP
Мне нужно извлечь TCP-потоки с их содержимым из файла дампа, а затем сохранить их в другом файле каждый поток отдельно
5 ответов
Вы определенно хотите использовать Bro, точнее, его политику content.bro. Например, учитывая трассировку, содержащую HTTP-запросы, выполняется следующее...
bro -r http.trace -f 'tcp and port 80' contents
... производит файлы
contents.[senderIP].[senderPort]-[destIP].[destPort]
contents.[destIP].[destPort]-[senderIP].[senderPort]
для каждого соединения, каждое из которых содержит однонаправленное содержимое потока.
Повторная сборка потока очень надежна, процесс масштабируется до очень больших файлов, и все настраивается в соответствии с вашими потребностями.
Если вы делаете только несколько, Wireshark может сделать это.
шаги:
- Откройте захват в Wireshark.
- Нажмите на пакет из интересующего вас TCP-соединения
- Анализировать -> Следить за TCP Stream
- Нажмите "Сырой"
- Выберите (во всплывающем меню) один из вариантов "Весь разговор" или одно из двух направлений.
- Нажмите "Сохранить как"
Альтернативные шаги, только для HTTP:
- Откройте захват
- Выберите Файл -> Экспорт -> Объекты -> HTTP
- Откроется диалоговое окно, показывающее все объекты HTTP в захвате. Вы можете сохранить некоторые или все из них.
Это с Wireshark 1.2.1 на Linux/GTK. Опция 'follow TCP stream' была перемещена между версиями, поэтому она может быть где-то еще, если у вас более старая версия. Но он всегда назывался Follow TCP Stream, поэтому вы сможете найти его.
Быстрый поиск также показывает несколько других опций, если Wireshark не работает для вас: ngrep, tcpick, chaosreader и tcpflow.
tcpflow -r my_dump_file.pcap -o output_dir/
Он извлечет каждый поток tcp отдельно в файл с именем output_dir. Каждый поток в своем собственном файле.
Вот man-страница с большим количеством опций
Проволочная акула может быть? Он может быть использован для фильтрации сессий, и я думаю, что вы можете сохранить их отдельно.
Вы также можете взглянуть на NetFlow и связанные с ним инструменты.