Как я могу видеть пакеты во время захвата с помощью tcpdump.

Вопрос или проблема

Как я могу видеть трафик, пока его захватываю с помощью tcpdump.

Когда я использую -w, пакеты не отображаются во время захвата.

sudo tcpdump -i enp2s0 -w test.pcap
tcpdump: прослушивание enp2s0, тип канала EN10MB (Ethernet), размер захвата 262144 байт
^CЗахвачено 6 пакетов
Получено 7 пакетов по фильтру
0 пакетов отфильтровано ядром

Итак, после немного экспериментов, ответ следующий :

sudo tcpdump -i enp2s0 -U -w - | tee test.pcap | tcpdump -r -

-w - : записывать в стандартный вывод.

-U : записывать пакеты по мере их поступления. Не ждать, пока буфер заполнится.

Tee будет записывать в файл, а tcpdump -r - будет читать пакеты из стандартного ввода.

-w опция предназначена для записи вывода tcpdump в файл. Вы можете убрать эту опцию, если хотите печатать в вашем терминале.

Поскольку вы используете опцию -w, пакеты сохраняются в файл и не отображаются на стандартном выводе. Вот из справки tcpdump:

https://www.tcpdump.org/manpages/tcpdump.1.html

-w file
    Записывать сырые пакеты в файл, а не разбирать и выводить их. Позже их можно распечатать с помощью опции -r. Стандартный вывод используется, если файл равен ``-''. 
    Этот вывод будет буферизоваться, если записывать в файл или в канал, поэтому программа, читающая из файла или канала, может не видеть пакеты в произвольное время после их получения. Используйте флаг -U, чтобы пакеты записывались сразу после получения. 
    Тип MIME application/vnd.tcpdump.pcap зарегистрирован в IANA для pcap файлов. Расширение имени файла .pcap кажется наиболее распространенным наряду с .cap и .dmp. Сам tcpdump не проверяет расширение при чтении файлов захвата и не добавляет расширение при их записи (вместо этого он использует магические числа в заголовке файла). Однако многие операционные системы и приложения будут использовать расширение, если оно присутствует, и рекомендуется добавлять одно (например, .pcap). 
    См. pcap-savefile(5) для описания формата файла.  

Если вы хотите сделать и то, и другое одновременно, вот способ это осуществить:

Как я могу заставить tcpdump записывать в файл и стандартный вывод соответствующие данные?

Чтобы подключить новый процесс кongoing dump, попробуйте:

tail -F -n+0 $dumpfile | tcpdump -r -

–print
Печать извлеченного вывода пакетов, даже если сырые пакеты сохраняются в файл с флагом -w.

Ответ или решение

Когда вы используете инструмент tcpdump для захвата сетевого трафика, вы можете столкнуться с проблемой — выходные данные не отображаются на экране, когда вы используете опцию -w для записи пакетов в файл. Это связано с тем, что при использовании этой опции tcpdump сохраняет «сырой» трафик в файл, а не выводит его на стандартный вывод. В этом ответе мы рассмотрим, как решить эту проблему, чтобы вы могли одновременно видеть захватываемые пакеты и записывать их в файл.

Решение проблемы отображения пакетов во время захвата

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

sudo tcpdump -i enp2s0 -U -w - | tee test.pcap | tcpdump -r -

Давайте разберём этот команду по частям:

  1. sudo tcpdump -i enp2s0 -U -w -:

    • -i enp2s0: указывает интерфейс, на котором вы хотите захватывать трафик (в вашем случае это enp2s0).
    • -U: дает команду tcpdump записывать пакеты по мере их поступления, без ожидания заполнения буфера.
    • -w -: сообщает tcpdump записывать захваченные пакеты в стандартный вывод вместо файла.
  2. | tee test.pcap:

    • Оператор | (пайп) передает вывод первой команды во вторую команду.
    • Команда tee дублирует входные данные: она записывает пакеты в файл test.pcap и одновременно передает их дальше по конвейеру.
  3. | tcpdump -r -:

    • В этом случае tcpdump читает пакеты из стандартного ввода (входящих данных) и выводит их на экран. Знак - указывает на то, что он должен читать их из стандартного ввода.

Другие варианты

Если вы хотите видеть пакеты на экране без записи их в файл, просто уберите опцию -w. Это приведет к следующему:

sudo tcpdump -i enp2s0

Дополнительные опции для анализа

  • Опция --print позволяет выводить разобранные пакеты, даже если вы используете флаг -w. Это может быть полезно, если вы хотите просмотреть определенные детали пакетов, сохраняя при этом их полное содержимое для последующего анализа.

Заключение

Используя комбинацию инструментов tcpdump и применяя соответствующие опции, вы можете эффективно мониторить сетевой трафик в реальном времени и одновременно сохранять его для последующего анализа. Выбор правильной команды позволяет вам не только видеть данные, но и обеспечивать их сохранность, что особенно важно в средах, где анализ сетевого трафика играет критически важную роль.

Оцените материал
Добавить комментарий

Капча загружается...