Где tcpdump сохраняет файлы

Обновлено: 21.11.2024

Справочная страница TCPDUMP

В вашей системе может быть установлена ​​другая версия, возможно, с некоторыми локальными изменениями. Для достижения наилучших результатов убедитесь, что эта версия этой справочной страницы соответствует вашим потребностям. При необходимости попробуйте найти другую версию на этом веб-сайте или на справочных страницах, доступных в вашей установке.

ОБЗОР

[ -c количество ] [ --count ] [ -C размер_файла ]
[ -E spi@ipaddr algo:secret. ]
[ -F file ] [ -G rotate_seconds ] [ -i interface ]
[ --immediate-mode ] [ -j tstamp_type ] [ -m module ]
[ -M secret ] [ --number ] [ --print ]
[ --print-sampling nth ] [ -Q in|out|inout ] [ -r file ]
[ -s snaplen ] [ -T type ] [ --version ] [ -V file ]
[ -w file ] [ -W filecount ] [ -y datalinktype ]
[ -z postrotate-command ] [ -Z user ]
[ --time-stamp-precision= tstamp_precision ]
[ --micro ] [ --nano ]
[ выражение ]

ОПИСАНИЕ

Tcpdump выводит описание содержимого пакетов на сетевом интерфейсе, соответствующих логическому выражению (синтаксис выражения см. в pcap-filter (7)); описанию предшествует отметка времени, напечатанная по умолчанию в виде часов, минут, секунд и долей секунды с полуночи. Он также может быть запущен с флагом -w, который заставляет его сохранять данные пакета в файл для последующего анализа, и/или с флагом -r, который заставляет его читать из сохраненного файла пакета, а не читать пакеты. с сетевого интерфейса. Его также можно запустить с флагом -V, что приведет к чтению списка сохраненных файлов пакетов. Во всех случаях tcpdump будет обрабатывать только те пакеты, которые соответствуют выражению.

Tcpdump, если он не запущен с флагом -c, будет продолжать захват пакетов до тех пор, пока он не будет прерван сигналом SIGINT (генерируется, например, вводом символа прерывания, обычно control-C) или сигналом SIGTERM (обычно генерируется командой kill (1)); при запуске с флагом -c он будет захватывать пакеты до тех пор, пока не будет прерван сигналом SIGINT или SIGTERM или пока не будет обработано указанное количество пакетов.

Когда tcpdump закончит захват пакетов, он сообщит количество: ``захваченных'' пакетов (количество пакетов, которые tcpdump получил и обработал); пакеты ``получены фильтром'' (значение этого зависит от ОС, на которой вы используете tcpdump , и, возможно, от того, как была настроена ОС - если фильтр был указан в командной строке, в некоторых ОС он считается пакеты, независимо от того, были ли они сопоставлены с выражением фильтра, и даже если они были сопоставлены с выражением фильтра, независимо от того, прочитал ли и обработал ли их tcpdump, в других ОС он считает только пакеты, которые были сопоставлены с выражением фильтра, независимо от прочел ли и обработал ли их tcpdump, а в других ОС считает только те пакеты, которые соответствовали выражению фильтра и были обработаны tcpdump ); пакеты, «отброшенные ядром» (это количество пакетов, которые были отброшены из-за нехватки буферного пространства механизмом захвата пакетов в ОС, на которой работает tcpdump, если ОС сообщает эту информацию приложениям; если нет, то будет сообщено как 0).

На платформах, поддерживающих сигнал SIGINFO, таких как большинство BSD (включая macOS) и Digital/Tru64 UNIX, он сообщит об этих подсчетах при получении сигнала SIGINFO (генерируемого, например, путем ввода вашего ``status'' символ, как правило, control-T, хотя на некоторых платформах, таких как macOS, символ «статус» не установлен по умолчанию, поэтому вы должны установить его с помощью stty (1), чтобы использовать его) и продолжите захват пакетов . На платформах, не поддерживающих сигнал SIGINFO, того же можно добиться с помощью сигнала SIGUSR1.

Использование сигнала SIGUSR2 вместе с флагом -w принудительно сбрасывает буфер пакетов в выходной файл.

Для чтения пакетов из сетевого интерфейса могут потребоваться специальные права доступа; подробности см. на справочной странице pcap (3PCAP). Чтение сохраненного файла пакета не требует особых привилегий.

ВАРИАНТЫ

Синтаксис выражения см. в pcap-filter (7) .

Аргумент выражения может быть передан в tcpdump либо как один аргумент оболочки, либо как несколько аргументов оболочки, в зависимости от того, что более удобно. Как правило, если выражение содержит метасимволы Shell, такие как обратная косая черта, используемая для экранирования имен протоколов, проще передать его как один аргумент в кавычках, чем экранировать метасимволы Shell. Перед синтаксическим анализом несколько аргументов объединяются пробелами.

ПРИМЕРЫ

Чтобы распечатать все пакеты, прибывающие или уходящие после захода солнца:

Чтобы распечатать трафик между helios и hot или ace :

Чтобы распечатать все IP-пакеты между ace и любым хостом, кроме helios:

Чтобы распечатать весь трафик между локальными хостами и хостами в Беркли:

Чтобы напечатать весь ftp-трафик через snup интернет-шлюза: (обратите внимание, что выражение взято в кавычки, чтобы оболочка не (неправильно) интерпретировала круглые скобки):

Для печати трафика, который не исходит и не предназначен для локальных хостов (если вы подключаетесь к одной другой сети, этот материал никогда не должен попадать в вашу локальную сеть).

Чтобы распечатать начальный и конечный пакеты (пакеты SYN и FIN) каждого сеанса TCP, в котором участвует нелокальный узел.

Я хочу, чтобы tcpdump записывал необработанные данные пакетов в файл, а также отображал анализ пакетов в стандартный вывод по мере захвата пакетов (под анализом я подразумеваю строки, которые он обычно отображает, когда -w отсутствует). Кто-нибудь может сказать мне, как это сделать?

4 ответа 4

Вот отличный способ сделать то, что вы хотите:

  • -w — указывает tcpdump записывать двоичные данные в стандартный вывод
  • tee записывает эти двоичные данные в файл И в собственный стандартный вывод
  • -r — указывает второму tcpdump получать данные из стандартного ввода

Используя эту технику, WireShark пожаловался на некоторые файлы, утверждая, что последний пакет неполный. Я предполагаю, что tcpdump разбуферит и запишет все данные перед завершением, но, если это не так, здесь может быть полезна опция -U. На странице руководства: `Используйте флаг -U, чтобы пакеты записывались сразу после их получения.`. (пытаясь не потерять буферизованный/все еще не записанный в файл пакет при уничтожении tcpdump). Однако у меня не было изменений, подтверждающих это.

@deppfx Это сработало бы, ценой сохранения только текста. -w заставляет tcpdump записывать данные в стандартном двоичном формате.

@cnicutar Это гениально. Мне это нравится. Я использую с параметрами -U для буферизации пакетов для печати по пакетам, -n для отказа от преобразования IP-адресов и портов в имена. После изменений моя команда tcpdump -w - | имя_файла.$(дата +%Y-%m-%d.%Z.%H.%M.%S).pcap | tcpdump -r -part with $( ) предоставляет метку времени, которую мы не можем получить иначе, так как мы записываем в STDOUT с -w . Я знаю, что часть, отличная от -U, не имеет отношения к вопросу, но помещаю ее здесь на случай, если кто-то захочет использовать.

@sdkks это было великолепно! tcpdump -i eth0 порт 22, а не хост 172.30.247.4 -U -w - | tee capture.pcap |tcpdump -r - Да благословит Бог stackoverflow!

Начиная с tcpdump 4.9.3 4.99.0, можно использовать параметр --print:

У меня не работает на Ubuntu 20.04 tcpdump 4.9.3 libpcap 1.9.1: tcpdump: нераспознанный параметр '--print' . Это происходит с исходной версией git tcpdump.

Если вам нужен способ сделать это без двойного запуска tcpdump, подумайте:

В интерактивной командной строке вы можете использовать $TTY вместо $(tty), но в скрипте первый не будет установлен (хотя я не уверен, насколько распространено запускать tcpdump в скрипте).< /p>

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

По своему опыту работы системным администратором мне часто приходилось сталкиваться с трудностями при устранении проблем с сетевым подключением. В таких ситуациях tcpdump — отличный союзник.

Терминал Linux

Tcpdump – это утилита командной строки, позволяющая собирать и анализировать сетевой трафик, проходящий через вашу систему. Он часто используется для устранения неполадок в сети, а также в качестве инструмента безопасности.

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

В этой статье мы рассмотрим некоторые наиболее распространенные функции tcpdump.

1. Установка в Linux

Tcpdump входит в состав нескольких дистрибутивов Linux, поэтому есть вероятность, что он у вас уже установлен. Проверьте, установлен ли в вашей системе tcpdump, с помощью следующей команды:

Если tcpdump не установлен, вы можете установить его, используя диспетчер пакетов вашего дистрибутива. Например, в CentOS или Red Hat Enterprise Linux, вот так:

Для Tcpdump требуется libpcap — библиотека для захвата сетевых пакетов. Если он не установлен, он будет автоматически добавлен как зависимость.

Вы готовы начать захват некоторых пакетов.

2. Захват пакетов с помощью tcpdump

Чтобы перехватывать пакеты для устранения неполадок или анализа, tcpdump требует повышенных разрешений, поэтому в следующих примерах большинство команд имеют префикс sudo .

В приведенном выше примере вы можете увидеть все интерфейсы, доступные на моей машине. Специальный интерфейс any позволяет выполнять захват в любом активном интерфейсе.

Давайте воспользуемся им для захвата некоторых пакетов. Захватите все пакеты на любом интерфейсе, выполнив эту команду:

Tcpdump продолжает захват пакетов, пока не получит сигнал прерывания. Вы можете прервать захват, нажав Ctrl+C . Как вы можете видеть в этом примере, tcpdump перехватил более 9000 пакетов. В этом случае, поскольку я подключен к этому серверу с помощью ssh, tcpdump захватил все эти пакеты. Чтобы ограничить количество перехваченных пакетов и остановить tcpdump , используйте параметр -c (для количества):

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

По умолчанию tcpdump преобразует IP-адреса и порты в имена, как показано в предыдущем примере. При устранении неполадок в сети часто проще использовать IP-адреса и номера портов; отключите разрешение имени с помощью параметра -n и разрешение порта с помощью -nn :

Как показано выше, в выходных данных захвата теперь отображаются IP-адреса и номера портов. Это также не позволяет tcpdump выполнять поиск DNS, что помогает снизить сетевой трафик при устранении неполадок в сети.

Теперь, когда вы можете перехватывать сетевые пакеты, давайте рассмотрим, что означает этот вывод.

3. Понимание выходного формата

Tcpdump способен захватывать и декодировать множество различных протоколов, таких как TCP, UDP, ICMP и многие другие. Хотя мы не можем охватить их все здесь, чтобы помочь вам начать работу, давайте рассмотрим пакет TCP. Вы можете найти более подробную информацию о различных форматах протоколов на справочных страницах tcpdump. Типичный TCP-пакет, захваченный tcpdump, выглядит следующим образом:

Поля могут различаться в зависимости от типа отправляемого пакета, но это общий формат.

Первое поле, 08:41:13.729687, представляет отметку времени полученного пакета по местным часам.

Далее IP представляет собой протокол сетевого уровня, в данном случае IPv4 . Для пакетов IPv6 значение равно IP6 .

Следующее поле 192.168.64.28.22 – это исходный IP-адрес и порт. Затем следует IP-адрес и порт назначения, представленные 192.168.64.1.41916 .

После источника и назначения вы можете найти TCP Flags Flags [P.] . Типичные значения для этого поля включают:

< td>F
Значение Тип флага Описание
S SYN Начало соединения
FIN Завершение соединения
P PUSH Отправка данных
R RST Сброс соединения
.< /td> ACK Подтверждение

Это поле также может быть комбинацией этих значений, например [S.] для пакета SYN-ACK.

Далее идет порядковый номер данных, содержащихся в пакете. Для первого захваченного пакета это абсолютное число. Последующие пакеты используют относительный номер, чтобы их было легче отслеживать. В этом примере последовательность — seq 196:568, что означает, что этот пакет содержит байты со 196 по 568 этого потока.

За ним следует номер подтверждения: ack 1 . В данном случае это 1, так как это сторона, отправляющая данные. Для стороны, получающей данные, это поле представляет следующий ожидаемый байт (данные) в этом потоке. Например, номер подтверждения для следующего пакета в этом потоке будет 568.

Следующее поле — это размер окна win 309 , который представляет количество байтов, доступных в приемном буфере, за которым следуют параметры TCP, такие как MSS (максимальный размер сегмента) или масштаб окна. Дополнительные сведения о параметрах протокола TCP см. в разделе Параметры протокола управления передачей (TCP).

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

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

4. Фильтрация пакетов

Как упоминалось выше, tcpdump может захватывать слишком много пакетов, некоторые из которых даже не связаны с устраняемой вами проблемой. Например, если вы устраняете проблему с подключением к веб-серверу, трафик SSH вас не интересует, поэтому удаление пакетов SSH из выходных данных облегчит работу над реальной проблемой.

Одной из самых мощных функций tcpdump является его способность фильтровать захваченные пакеты с использованием различных параметров, таких как IP-адреса источника и получателя, порты, протоколы и т. д. Давайте рассмотрим некоторые из наиболее распространенных.

Протокол

Для фильтрации пакетов по протоколу укажите протокол в командной строке. Например, перехватывайте пакеты ICMP только с помощью этой команды:

В другом терминале попробуйте пропинговать другую машину:

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

В этом примере tcpdump захватывает и отображает только пакеты, поступающие и исходящие от хоста 54.204.39.132 .

Исходный IP/имя хоста

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

И наоборот, вы можете использовать фильтр dst для фильтрации по целевому IP-адресу/имени хоста:

Сложные выражения

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

5. Проверка содержимого пакета

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

6. Сохранение снимков в файл

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

Чтобы сохранить пакеты в файл, а не отображать их на экране, используйте параметр -w (для записи):

Эта команда сохраняет выходные данные в файле с именем webserver.pcap . Расширение .pcap означает "захват пакетов" и является общепринятым для этого формата файлов.

Как показано в этом примере, на экране ничего не отображается, а захват завершается после захвата 10 пакетов в соответствии с параметром -c10 . Если вам нужна обратная связь, чтобы убедиться, что пакеты перехватываются, используйте параметр -v .

Tcpdump создает файл в двоичном формате, поэтому его нельзя просто открыть в текстовом редакторе. Чтобы прочитать содержимое файла, выполните tcpdump с параметром -r (для чтения):

Поскольку вы больше не перехватываете пакеты напрямую из сетевого интерфейса, sudo не требуется для чтения файла.

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

Что дальше?

Эти основные функции tcpdump помогут вам начать работу с этим мощным и универсальным инструментом. Чтобы узнать больше, посетите веб-сайт tcpdump и справочные страницы.

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

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

Эта статья была первоначально опубликована в октябре 2018 г. и обновлена ​​Сетом Кенлоном.

Файлы pcap — это файлы данных, созданные с помощью программы, и они содержат пакетные данные сети. Эти файлы в основном используются для анализа сетевых характеристик определенных данных. … Данные и результаты сетевого анализа сохраняются в формате . расширение файла pcap, поэтому они называются . pcap-файлы.

Для чего используется PCAP?

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

Как прочитать файл PCAP в Linux?

tcpshow считывает файл pcap, созданный такими утилитами, как tcpdump, tshark, wireshark и т. д., и предоставляет заголовки пакетов, соответствующие логическому выражению. Заголовки, принадлежащие таким протоколам, как Ethernet, IP, ICMP, UDP и TCP, декодируются.

Как открыть файл PCAP?

Чтобы открыть файл PCAPNG, вам понадобится подходящее программное обеспечение, например WireShark от Gerald Combs. Без надлежащего программного обеспечения вы получите сообщение Windows «Как вы хотите открыть этот файл?» (Windows 10) или "Windows не может открыть этот файл" (Windows 7) или аналогичное предупреждение для Mac/iPhone/Android.

Как скопировать файл PCAP в Linux?

Как получить PCCAPS из Linux

  1. sudo apt-get update && apt-get install tcpdump.
  2. Эта команда загрузит списки пакетов и обновит список, чтобы получить информацию о новейших версиях пакетов. После обновления списка пакетов команда продолжит загрузку и установку пакета tcpdump.

Как использовать PCAP в Linux?

Используйте tcpdump для записи в файл pcap (дамп wireshark)

  1. tcpdump — это сетевой анализатор командной строки, используемый для перехвата сетевых пакетов. …
  2. -s 0 установит максимальное значение байта захвата, т. е. 65535, после чего файл захвата не будет обрезан.
  3. -i eth0 используется для предоставления интерфейса Ethernet, который вы хотите захватить. …
  4. порт ftp или ssh — это фильтр, который будет перехватывать только пакеты ftp и ssh.

В чем разница между PCAP и Pcapng?

Хотя формат pcap содержит некоторую информацию об интерфейсе захвата, информация об интерфейсе является частью общего заголовка и не сохраняется отдельно для каждого пакета. … Эта проблема решается с помощью pcapng, который позволяет файлу захвата определять несколько интерфейсов с помощью «Блоков описания интерфейса».

Что такое tcpdump в Linux?

Tcpdump – это утилита командной строки, позволяющая собирать и анализировать сетевой трафик, проходящий через вашу систему. Он часто используется для устранения неполадок в сети, а также в качестве инструмента безопасности. Мощный и универсальный инструмент, включающий множество параметров и фильтров, tcpdump можно использовать в самых разных случаях.

Как найти Tcpdump в Linux?

Как запустить Wireshark в Linux?

Как установить Wireshark в Linux? Чтобы установить Wireshark, просто введите следующую команду в свой терминал — sudo apt-get install Wireshark После этого Wireshark будет установлен и доступен для использования. Если на этом этапе вы запустите Wireshark от имени пользователя без полномочий root (что и следует делать), вы увидите сообщение об ошибке, в котором говорится:

Как открыть файлы PCAP на Android?

Чтобы перейти к захвату PCAP, вы можете сразу просмотреть свои файлы PCAP с помощью службы CloudShark. Чтобы сделать это еще проще на Android, попробуйте CloudShark Uploader, который позволяет отправлять данные напрямую в CloudShark или на частное устройство CloudShark!

Как прочитать вывод tcpdump?

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

Как преобразовать текстовый файл в формат PCAP?

99% времени я просто использую основную функцию без каких-либо опций, и это так же просто, как следующие шаги:

  1. Сохраните дамп некоторых пакетов в формате ASCII.
  2. Сохраните их в файл и убедитесь, что они находятся в правильном формате для text2pcap. Пример ниже.
  3. В вашей оболочке введите text2pcap

Где Tcpdump сохраняет файл?

Примечание. Для создания файла tcpdump с помощью утилиты настройки требуется больше места на жестком диске, чем для создания файла из командной строки. Утилита конфигурации создает файл tcpdump и файл TAR, содержащий tcpdump. Эти файлы расположены в каталоге /shared/support.

В чем разница между Wireshark и tcpdump?

Tcpdump — мощная команда для захвата сетевых пакетов. Его можно использовать для захвата пакетов для всех типов протоколов, таких как DNS, DHCP, SSH и т. д. ... Wireshark — это анализатор сетевых пакетов. Анализатор сетевых пакетов попытается захватить сетевые пакеты и отобразить данные этих пакетов как можно более подробно.

Что такое tcpdump и как он работает?

tcpdump — это компьютерная программа для анализа пакетов сети передачи данных, работающая под управлением интерфейса командной строки. Это позволяет пользователю отображать TCP/IP и другие пакеты, передаваемые или принимаемые по сети, к которой подключен компьютер. … В этих системах tcpdump использует библиотеку libpcap для захвата пакетов.

Читайте также: