Tcpdump - это команда, используемая в различных операционных системах Linux (ОС), которая собирает пакеты TCP / IP, которые проходят через сетевой адаптер. Tcpdump, как инструмент пакетного анализатора, может не только анализировать сетевой трафик, но и сохранять его в файл.
В отличие от некоторых команд, предоставляемых операционной системой по умолчанию, вы можете обнаружить, что вы не можете использовать tcpdump, потому что он не установлен. Чтобы установить tcpdump, выполните apt-get install ТСРйитр или же yum install tcpdump, в зависимости от вашей ОС.
Как работает Tcpdump
Tcpdump печатает заголовки пакетов в сетевом интерфейсе, которые соответствуют логическому выражение , Его также можно запустить с помощью-w , который заставляет его сохранять данные пакета в файл для последующего анализа и / или с помощью-р флаг, который заставляет его считывать из сохраненного пакетного файла, а не читать пакеты из сетевого интерфейса. Во всех случаях только пакеты, которые соответствуют выражение будут обрабатываться ТСРйитр .
Tcpdump будет, если не будет работать с-с flag, продолжить сбор пакетов до тех пор, пока он не будет прерван сигналом SIGINT (сгенерированный, например, путем ввода символа прерывания, обычно Ctrl + C,) или сигнал SIGTERM (обычно генерируемый с помощьюубийство(1)); если запустить-с флаг, он будет захватывать пакеты до тех пор, пока не будет прерван сигналом SIGINT или SIGTERM или не будет обработано указанное количество пакетов.
Переключатели, упомянутые выше, подробно описаны ниже в этой статье.
когда ТСРйитр завершает захват пакетов, он будет сообщать о количестве:
- Пакеты, полученные фильтром.
- Смысл этого зависит от ОС, на которой вы работаете ТСРйитр , и, возможно, по пути настройки ОС. Если в командной строке был указан фильтр, то на некоторых ОС он подсчитывает пакеты независимо от того, были ли они сопоставлены выражением фильтра, а на других он учитывает только пакеты, которые были сопоставлены выражением фильтра и обрабатывались ТСРйитр.
- Пакеты «отбрасываются ядром».
- Это количество пакетов, которые были удалены из-за нехватки пространства в буфере, механизмом захвата пакетов в ОС, на котором ТСРйитр выполняется, если ОС сообщает эту информацию приложениям. Если нет, то будет сообщено как 0.
На платформах, поддерживающих сигнал SIGINFO, таких как большинство BSD (Berkeley Software Distributions), он будет сообщать о таких подсчетах, когда он получает сигнал SIGINFO (сгенерированный, например, путем ввода вашего символа «статус», обычно Ctrl + T,) и будет продолжать сбор пакетов.
Совместимость Tcpdump
Чтение пакетов из сетевого интерфейса с помощью команды tcpdump может потребовать специальных привилегий ( чтение сохраненный пакетный файл не требует таких привилегий):
- SunOS 3.x или 4.x с NIT или BPF: Вы должны иметь доступ для чтения к / DEV / нит или же DEV / BPF * .
- Solaris с DLPI: У вас должен быть доступ на чтение / запись к псевдо-устройству сети, например / DEV / ле , Однако, по крайней мере, в некоторых версиях Solaris этого недостаточно ТСРйитр для захвата в беспорядочном режиме; в тех версиях Solaris, вы должны быть root или ТСРйитр должен быть установлен setuid на root, чтобы захватить в беспорядочном режиме. Обратите внимание, что на многих (возможно, всех) интерфейсах, если вы не выполняете захват в беспорядочном режиме, вы не увидите никаких исходящих пакетов, поэтому захват, не выполненный в беспорядочном режиме, может оказаться не очень полезным.
- HP-UX с DLPI: Вы должны быть root или ТСРйитр должен быть установлен setuid на root.
- IRIX с snoop: Вы должны быть root или ТСРйитр должен быть установлен setuid на root.
- Linux: Вы должны быть root или ТСРйитр должен быть установлен setuid на root.
- Ultrix и Digital UNIX / Tru64 UNIX: Любой пользователь может захватить сетевой трафик с помощью ТСРйитр , Тем не менее, ни один пользователь (даже суперпользователь) не может захватывать в режиме promiscuous на интерфейсе, если суперпользователь не включил режим promiscuous-mode на этом интерфейсе, используя pfconfig (8), и ни один пользователь (даже не суперпользователь) не может захватить одноадресный трафик, полученный или отправленный машиной на интерфейсе, если суперпользователь не включил операцию полного копирования на этом интерфейсе, используя pfconfig , так полезным пакетный захват на интерфейсе, вероятно, требует, чтобы на этом интерфейсе была включена работа как в режиме размножения, так и в режиме полного копирования или в обоих режимах.
- BSD: Вы должны иметь доступ для чтения к / DEV / BPF * .
Синтаксис команды Tcpdump
Как и все компьютерные команды, команда tcpdump работает правильно, только если синтаксис верен:
ТСРйитр -adeflnNOpqRStuvxX -с подсчитывать
-С размер файла -F файл
-я интерфейс -m модуль -р файл
-s snaplen -T тип -U пользователь -w файл
-E алго: тайна выражение
Параметры команды Tcpdump
Это все параметры, которые вы можете использовать с командой tcpdump:
- -a: Попытка конвертировать сетевые и широковещательные адреса в имена.
- -с: Выход после получения подсчитывать пакеты.
- -С: Прежде чем писать необработанный пакет в файл сохранения, проверьте, больше ли файл в настоящее время больше размер файла и, если да, закройте текущий файл сохранения и откройте новый.Savefiles после первого файла сохранения будет иметь имя, указанное в-w флаг, с номером после него, начиная с 2 и продолжая вверх. Единицы измерения размер файла составляют миллионы байтов (1 000 000 байт, а не 1 048 576 байт).
- -d: Дамп скомпилированного кода согласования пакетов в удобочитаемой форме для стандартного вывода и остановки.
- -dd: Дамп-код соответствия пакетов какС фрагмент программы.
- -ddd: Дамп-пакетный код в виде десятичных чисел (которому предшествует счет).
- -e: Распечатайте заголовок уровня ссылки на каждой строке дампа.
- -E: Использовать алго: тайна для дешифрования пакетов ESP IPSec. Алгоритмы могут бытьдез-CBC, 3des-CBC, Blowfish-CBC, rc3-CBC, CAST128-CBC, или женикто, По умолчанию используетсядез-CBC, Возможность дешифрования пакетов присутствует только в том случае, если ТСРйитр был скомпилирован с включенной криптографией. секрет текст ascii для секретного ключа ESP. В настоящий момент мы не можем брать произвольное двоичное значение. Опция предполагает RFC2406 ESP, а не RFC1827 ESP. Этот параметр предназначен только для целей отладки, и использование этой опции с действительно секретным ключом не рекомендуется. Представляя секретный ключ IPsec в командной строке, вы делаете его видимым для других, используя п.с. (1) и в других случаях.
- -f: Печатайте «чужие» интернет-адреса численно, а не символически (этот вариант предназначен для того, чтобы обойти серьезное повреждение мозга на сервере Sun yp - как правило, он вечно вел перевод нелокальных интернет-номеров).
- -F: Использовать файл как вход для выражения фильтра. Дополнительное выражение, указанное в командной строке, игнорируется.
- -я: Слушайте интерфейс , Если не указано, ТСРйитр выполняет поиск в списке системного интерфейса для наименьшего пронумерованного, настроенного интерфейса (исключая loopback). Связи разбиваются, выбирая самый ранний матч. В системах Linux с ядрами 2.2 или более поздних версий интерфейс аргумент «any» можно использовать для захвата пакетов со всех интерфейсов. Обратите внимание, что захват на «любом» устройстве не будет выполняться в беспорядочном режиме.
- -l: Сделать строку stdout забуференной. Полезно, если вы хотите видеть данные во время их захвата. Например, «tcpdump -l | tee dat» или «tcpdump -l> dat & tail -f dat».
- -m: Загрузить определения модуля SMI MIB из файла модуль , Эта опция может использоваться несколько раз для загрузки нескольких модулей MIB в ТСРйитр .
- -n: Не конвертируйте адреса хостов в имена. Это можно использовать, чтобы избежать поиска DNS.
- -nn: Не конвертируйте номера протоколов и портов и т. Д. В имена.
- -N: Не печатайте имена доменов имени хоста. Например, если вы даете этот флаг, то ТСРйитр будет печатать «nic» вместо «nic.ddn.mil».
- -О: Не запускайте оптимизатор кода для сопоставления пакетов. Это полезно, только если вы подозреваете ошибку в оптимизаторе.
- -п: не переведите интерфейс в беспорядочный режим. Обратите внимание, что интерфейс может быть в беспорядочном режиме по какой-либо другой причине; следовательно, '-p' не может использоваться как аббревиатура для «ether host {local-hw-addr} или эфирного вещания».
- -q: Быстрый (тихий) выход. Распечатайте меньше информации о протоколе, поэтому выходные линии короче.
- -Р: Предположим, что ESP / AH-пакеты должны основываться на старой спецификации: RFC1825-RFC1829. Если указано, ТСРйитр не будет печатать поле предотвращения повтора. Поскольку в спецификации ESP / AH нет версии протокола, ТСРйитр не может вывести версию протокола ESP / AH.
- -р: Чтение пакетов из файл (который был создан с параметром -w). Стандартный ввод используется, если файл является "-''.
- -S: Печать абсолютных, а не относительных порядковых номеров TCP.
- -s: Snarf snaplen байт данных из каждого пакета, а не по умолчанию 68; с NIT SunOS, минимум на самом деле 96. Шестьдесят восемь байтов подходят для IP, ICMP, TCP и UDP, но могут обрезать информацию протокола из серверов имен и NFS-пакетов (см. ниже). Пакеты, усеченные из-за ограниченного моментального снимка, отображаются на выходе с помощью «| прото '', где прото это имя уровня протокола, на котором произошло усечение. Обратите внимание: при увеличении моментальных снимков увеличивается время, затрачиваемое на обработку пакетов, и, фактически, уменьшается количество буферизации пакетов. Это может привести к потере пакетов. Вы должны ограничить snaplen до наименьшего числа, которое будет захватывать информацию о протоколе, в которой вы заинтересованы. snaplen до 0 означает использование необходимой длины, чтобы поймать целые пакеты.
- -T: Силовые пакеты, выбранные " выражение "для интерпретации указанных тип , В настоящее время известны типыcnfp (Протокол Cisco NetFlow),RPC (Удаленный вызов процедур),РТП (Протокол приложений реального времени),RTCP (Протокол управления приложениями реального времени),SNMP (Простой протокол сетевого управления),НДС (Visual Audio Tool) итермометру (распределенная Белая доска).
- -t: не напечатайте временную метку на каждой линии сброса.
- -tt: Распечатайте неформатированную метку времени на каждой линии дампа.
- -U: Отбрасывает права root и изменяет идентификатор пользователя на пользователь и идентификатор группы для первичной группы пользователь .
- Заметка: Red Hat Linux автоматически отбрасывает привилегии пользователю «pcap», если ничего не указано.
- -ttt: Печать дельта (в микросекундах) между текущей и предыдущей строкой на каждой линии сброса.
- -tttt: Печать временной метки в формате по умолчанию, начинающейся по дате на каждой линии дампа.
- -u: Печать некодированных NFS-дескрипторов.
- -v: (Немного больше) подробный вывод. Например, печатается время жизни, идентификация, общая длина и параметры в IP-пакете. Также включает дополнительные проверки целостности пакета, такие как проверка контрольной суммы заголовка IP и ICMP.
- -vv: Еще более подробный вывод. Например, дополнительные поля печатаются из пакетов ответов NFS, а пакеты SMB полностью декодируются.
- -vvv: Еще более подробный вывод. Например, гостиницыSB … SE параметры печатаются полностью. С -ИКС Параметры telnet также печатаются в шестнадцатеричном виде.
- -w: Записать сырые пакеты в файл а не анализировать и распечатывать их. Впоследствии они могут быть напечатаны с опцией -r. Стандартный вывод используется, если файл является "-''.
- -Икс: Печать каждого пакета (минус его заголовок уровня ссылки) в шестнадцатеричном формате. Меньше всего пакета или snaplen байты будут напечатаны. Обратите внимание, что это весь пакет канального уровня, поэтому для уровней каналов, которые используются на пэде (например, Ethernet), байты заполнения также будут напечатаны, если пакет более высокого уровня короче, чем требуемое заполнение.
- -ИКС: При печати шестнадцатеричного значения также печатайте ascii. Таким образом, если-Икс также устанавливается, пакет печатается в hex / ascii. Это очень удобно для анализа новых протоколов. Даже если-Икс также не устанавливается, некоторые части некоторых пакетов могут быть напечатаны в hex / ascii.
- выражение : Выбирает, какие пакеты будут сброшены. Если нет выражение , все пакеты в сети будут сброшены. В противном случае, только пакеты, для которых выражение «истина» будет сбрасываться. выражение состоит из одного или нескольких примитивы. Примитивы обычно состоят из Я бы (имя или номер), которому предшествует один или несколько квалификаторов. Существует три разных типа классификатора:
- тип : Квалификаторы говорят, к какой категории относится имя или номер. Возможные типыхозяин, сеть, а такжепортНапример, «host foo», «net 128.3», «port 20». Если нет спецификатора типа,хозяин предполагается.
- реж : Квалификаторы определяют конкретное направление передачи и / или из Я бы , Возможные направления:ЦСИ, ДСТ, src или dst а такжеsrc и ДСТ (например, 'src foo', 'dst net 128.3', 'src или dst port ftp-data'). Если нет дири-определителя,src или dst предполагается. Для «нулевых» уровней ссылок (т. Е. Протоколов типа «точка-точка», таких как скольжение) прибывающий а также исходящий квалификаторы могут использоваться для указания желаемого направления.
- прото : Квалификаторы ограничивают соответствие конкретному протоколу. Возможные протоны: эфир, FDDI, тр, IP, ip6, агр, RARP, DECnet, ТСР, а такжеУДПНапример, «эфир src foo», «arp net 128.3», «tcp-порт 21». Если нет прото-определителя, предполагается использование всех протоколов, соответствующих типу. Например, 'src foo' означает '(ip или arp или rarp) src foo' (кроме последнего не является юридическим синтаксисом), 'net bar' означает '(ip или arp или rarp) net bar' и 'port 53' означает "(tcp или udp) порт 53 '.
- 'fddi' на самом деле является псевдонимом для «эфира»; анализатор рассматривает их одинаково как «уровень линии передачи данных, используемый для указанного сетевого интерфейса». Заголовки FDDI содержат адреса источника и назначения Ethernet, и часто содержат типы пакетов в виде Ethernet, поэтому вы можете фильтровать эти поля FDDI только как и с аналогичными полями Ethernet. Заголовки FDDI также содержат другие поля, но вы не можете явно их указывать в выражении фильтра.
- Аналогично, «tr» является псевдонимом для «эфира»; заявления предыдущего абзаца о заголовках FDDI также применяются к заголовкам Token Ring.
В дополнение к вышесказанному, есть некоторые специальные «примитивные» ключевые слова, которые не следуют шаблону:шлюз, широковещательный, Меньше, большая, а также арифметика выражения. Все это описано ниже.
Более сложные выражения фильтра создаются с использованием слова также, или же, а такжене для объединения примитивов - например, «host foo и not port ftp, а не ftp-данные порта». Чтобы сохранить ввод, идентичные списки классификаторов могут быть опущены (например, «tcp dst port ftp или ftp-data или domain» точно такие же, как «tcp dst port ftp или tcp dst port ftp-data или tcp dst port domain».)
Это примитивы, разрешенные командой tcpdump:
- dst host хозяин
- Истинно, если поле назначения IPv4 / v6 пакета хозяин , который может быть либо адресом, либо именем.
- хост src хозяин
- Истинно, если исходное поле IPv4 / v6 пакета хозяин .
- хозяин хозяин
- Истинно, если источник или получатель пакета IPv4 / v6 хозяин , Любое из вышеуказанных выражений хоста может быть добавлено с ключевыми словами,IP, агр, RARP, или жеip6, как в ip host хозяин (что эквивалентно эфир прото IP и хост хостов).
- Если хозяин это имя с несколькими IP-адресами, каждый адрес будет проверяться на соответствие.
- эфир dst ehost
- Истинно, если адрес назначения Ethernet ehost . Ehost может быть либо именем из / etc / ethers, либо числом (см. простые эфиры (3N) для числового формата).
- эфир src ehost
- Истинно, если адрес источника Ethernet ehost .
- эфирный хост ehost
- Истина, если либо источник Ethernet, либо адрес назначения ehost .
- шлюз хозяин
- Истина, если используемый пакет хозяин в качестве шлюза (то есть, адрес источника или адреса Ethernet хозяин но ни источник IP, ни IP-адресат не были хозяин ).
- хозяин должно быть именем и должно быть найдено как механизмами разрешения хоста-имени-IP-адреса машины (файл имен хоста, DNS, NIS и т. д.), так и механизм разрешения узла-адреса-устройства Ethernet-адреса машины (/ etc / эфиры и т. д.).
- Эквивалентное выражение эфирный хост ehost и теперь принимающий хозяин , который может использоваться с именами или номерами для host / ehost .) Этот синтаксис в данный момент не работает в конфигурации с поддержкой IPv6.
- dst net сеть
- Истинно, если адрес назначения IPv4 / v6 для пакета имеет номер сети сеть . Сеть может быть либо именем из / etc / networks, либо номером сети (см. сети (4) для получения подробной информации).
- src net сеть
- Истинно, если исходный адрес IPv4 / v6 пакета имеет номер сети сеть .
- сеть сеть
- Истина, если либо исходный, либо целевой адрес IPv4 / v6 пакета имеет номер сети сеть .
- сеть сеть маскировать маска подсети
- Истина, если IP-адрес соответствует сеть с конкретными маска подсети , Может быть квалифицированЦСИ или жеДСТ, Обратите внимание, что этот синтаксис недействителен для IPv6 сеть .
- сеть сеть / Len
- Истинно, если адрес IPv4 / v6 соответствует сеть с сетевой маской Len бит. Может быть квалифицированЦСИ или жеДСТ.
- Порт dst порт
- Истинно, если пакет является ip / tcp, ip / udp, ip6 / tcp или ip6 / udp и имеет значение порта назначения порт , порт может быть числом или именем, используемым в / etc / services (см. ТСР (4P) и УДП (4P)). Если используется имя, проверяются номер порта и протокол. Если используется число или неоднозначное имя, проверяется только номер порта (например,Порт dst 513 будет печатать как трафик tcp / login, так и udp / who, ипорт домена будет печатать как трафик tcp / domain, так и udp / domain).
- Порт src порт
- Истина, если пакет имеет значение порта источника порт .
- порт порт
- Истина, если либо исходный, либо конечный порт пакета порт , Любое из приведенных выше выражений порта может быть добавлено с ключевыми словами,ТСР или жеУДП, как в Порт tcp src порт , который соответствует только tcp-пакетам, исходный порт которых порт .
- Меньше длина
- Истина, если пакет имеет длину, меньшую или равную длина , Это эквивалентно len <= длина .
- большая длина
- Истина, если пакет имеет длину, большую или равную длина , Это эквивалентно len> = длина .
- ip proto протокол
- Истина, если пакет является IP-пакетом (см. IP (4P)) типа протокола протокол . протокол может быть числом или одним из имен ICMP , icmp6 , IGMP , IGRP , ПИМ , ах , особ , VRRP , УДП , или же ТСР , Обратите внимание, что идентификаторы ТСР , УДП , а также ICMP также являются ключевыми словами и должны быть экранированы с помощью обратной косой черты (), которая является в C-оболочке. Обратите внимание, что этот примитив не преследует цепочку заголовков протокола.
- ip6 proto протокол
- Истинно, если пакет представляет собой пакет протокола IPv6 типа протокола протокол , Обратите внимание, что этот примитив не преследует цепочку заголовков протокола.
- Прототип ip6 протокол
- Истинно, если пакет является пакетом IPv6 и содержит заголовок протокола с типом протокол в цепочке заголовков протокола. Например, Прототип ipv6 6 соответствует любому пакету IPv6 с заголовком протокола TCP в цепочке заголовков протокола. Пакет может содержать, например, заголовок проверки подлинности, заголовок маршрутизации или заголовок опции по ходу между заголовком IPv6 и заголовком TCP. Код BPF, испускаемый этим примитивом, является сложным и не может быть оптимизирован с помощью кода оптимизатора BPF в ТСРйитр , поэтому это может быть несколько медленным.
- ip protochain протокол
- ЭквивалентноПрототип ip6 протокол , но это для IPv4.
- эфирное вещание
- Истина, если пакет является широковещательным пакетом Ethernet. эфир ключевое слово необязательно.
- ip-трансляция
- Истина, если пакет является IP-вещательным пакетом. Он проверяет как универсальные, так и универсальные широковещательные соглашения и ищет маску локальной подсети.
- эфирный многоадресный
- Истина, если пакет представляет собой пакет многоадресной передачи Ethernet. эфир ключевое слово необязательно. Это сокращение для 'эфир 0 & 1! = 0'.
- ip multicast
- Истина, если пакет является многоадресным пакетом IP.
- ip6 multicast
- Истина, если пакет является многоадресным пакетом IPv6.
- эфир прото протокол
- Истинно, если пакет имеет тип эфира протокол . протокол может быть числом или одним из имен IP , ip6 , агр , RARP , разговор , ААП , DECnet , SCA , Lat , mopdl , moprc , ISO , СТП , IPX , или же NetBEUI , Обратите внимание, что эти идентификаторы также являются ключевыми словами и должны быть экранированы с помощью обратного слэша ().
- В случае FDDI (например,Протокол fddi arp') и Token Ring (например,'tr протокол arp'), для большинства этих протоколов идентификация протокола происходит из заголовка 802.2 Logical Link Control (LLC), который обычно накладывается поверх заголовка FDDI или Token Ring.
- При фильтрации большинства идентификаторов протокола на FDDI или Token Ring, ТСРйитр проверяет только поле идентификатора протокола заголовка LLC в так называемом формате SNAP с идентификатором организационного подразделения (OUI) 0x000000 для инкапсулированного Ethernet; он не проверяет, находится ли пакет в формате SNAP с OUI 0x000000.
- Исключения составляют ISO , для которого он проверяет поля DSAP (точка доступа службы доступа) и SSAP (исходная точка доступа к службе) заголовка LLC, СТП а также NetBEUI , где он проверяет DSAP заголовка LLC и разговор , где он проверяет пакет SNAP-формата с OUI 0x080007 и Appletalk etype.
- В случае Ethernet, ТСРйитр проверяет поле типа Ethernet для большинства этих протоколов; исключения ISO , живица , а также NetBEUI , для которого он проверяет кадр 802.3, а затем проверяет заголовок LLC, как и для FDDI и Token Ring; разговор , где он проверяет как для Appletalk etype в кадре Ethernet, так и для пакета формата SNAP, как и для FDDI и Token Ring; ААП , где он проверяет etp Appletalk ARP в кадре Ethernet или в блоке SNAP 802.2 с OUI 0x000000; а также IPX , где он проверяет IP-тип в кадре Ethernet, IPX DSAP в заголовке LLC, 802.3 без инкапсуляции заголовка LLC в IPX и IPIP-тип в кадре SNAP.
- decnet src хозяин
- Истинно, если адрес источника DECNET хозяин , который может быть адресом формы «10.123» или именем узла DECNET. Поддержка имени узла DECNET доступна только в системах Ultrix, настроенных для запуска DECNET.
- decnet dst хозяин
- Истинно, если адрес назначения DECNET хозяин .
- decnet host хозяин
- Истина, если либо источник DECNET, либо адрес получателя хозяин .
- IP, ip6, агр, RARP, разговор, ААП, DECnet, ISO, СТП, IPX, NetBEUI
- Сокращения для эфир прото п где п является одним из вышеуказанных протоколов.
- Lat, moprc, mopdl
- Сокращения для эфир прото п где п является одним из вышеуказанных протоколов. Обратите внимание, что ТСРйитр в настоящее время не знает, как разбирать эти протоколы.
- ВЛС Vlan_id
- Истина, если пакет представляет собой пакет VLAN IEEE 802.1Q. Если Vlan_id , только true, если пакет имеет указанные vlan_id , Обратите внимание, что первыйВЛС ключевое слово, встречающееся в выражение изменяет смещения декодирования на оставшуюся часть выражение в предположении, что пакет является пакетом VLAN.
- ТСР, УДП, ICMP
- Сокращения для ip proto п или ip6 proto п где п является одним из вышеуказанных протоколов.
- iso proto протокол
- Истинно, если пакет является пакетом протокола OSI типа протокола протокол . протокол может быть числом или одним из имен CLNP , ESIS , или же ISIS .
- CLNP, ESIS, ISIS
- Сокращения для iso proto п где п является одним из вышеуказанных протоколов. Обратите внимание, что ТСРйитр делает неполную работу по анализу этих протоколов.
- expr relop expr
- Истинно, если соотношение имеет место, где relop является одним из>, <,> =, <=, =,! =, и выраж представляет собой арифметическое выражение, состоящее из целочисленных констант (выраженное в стандартном синтаксисе C), нормальных двоичных операторах +, -, *, /, &, |, оператора длины и специальных ассемблеров пакетных данных. Чтобы получить доступ к данным внутри пакета, используйте следующий синтаксис: proto expr: размер .
Прото один изэфир, FDDI, тр, ррр, слип, ссылка на сайт, IP, агр, RARP, ТСР, УДП, ICMP, или же ip6, и указывает уровень протокола для операции индекса (эфир, FDDI, тр, ррр, слип, а такжессылка на сайт все относятся к каналу связи). Обратите внимание, что tcp, udp , а другие типы протоколов верхнего уровня применимы только к IPv4, а не к IPv6 (это будет исправлено в будущем). Смещение байта относительно указанного уровня протокола дается формулой выраж . Размер является необязательным и указывает количество байтов в интересующем поле; это может быть один, два или четыре, а по умолчанию - один. Оператор длины, обозначенный ключевым словомLen, дает длину пакета.
Например, 'эфир 0 & 1! = 0'ловит весь многоадресный трафик. Выражение 'ip 0 & 0xf! = 5'улавливает все IP-пакеты с опциями. Выражение 'ip 6: 2 & 0x1fff = 0'ловит только нефрагментированные дейтаграммы и фрагмент нуля фрагментированных дейтаграмм. Эта проверка неявно применяется кТСР а такжеУДП индекс операций. Например, TCP 0 всегда означает первый байт TCP заголовок , и никогда не означает первый байт промежуточного фрагмента.
Некоторые смещения и значения полей могут быть выражены как имена, а не как числовые значения. Доступны следующие смещения полей заголовка протокола: icmptype (Поле типа ICMP),icmpcode (Поле кода ICMP) иtcpflags (Поле флажков TCP).
Доступны следующие значения полей типа ICMP:ICMP-echoreply, ICMP-unreach, ICMP-sourcequench, ICMP-редирект, ICMP-эхо, ICMP-routeradvert, ICMP-routersolicit, ICMP-timxceed, ICMP-paramprob, ICMP-TSTAMP, ICMP-tstampreply, ICMP-IREQ, ICMP-ireqreply, ICMP-maskreq, ICMP-maskreply.
Доступны следующие значения полей флагов TCP:ТСР-ребристые, ТСР-син, ТСР-первый, ТСР-толчок, ТСР-толчок, ТСР-извед, ТСР-УРГ.
Примитивы могут быть объединены с использованием любого из следующего:
- Консолидированная группа примитивов и операторов (круглые скобки являются особыми для оболочки и должны быть экранированы)
- Отрицание ('!'или `не')
- Конкатенация ('&&' или же 'а также')
- Чередование ('||' или же 'или же')
Отрицание имеет наивысший приоритет. Чередование и конкатенация имеют одинаковый приоритет и ассоциируются слева направо. Обратите внимание, что явныеа также маркеры, а не сопоставление, необходимы для конкатенации.
Если идентификатор задан без ключевого слова, предполагается самое последнее ключевое слово. Например, не хозяин vs и туз сокращается для не хост против хозяина и туза, Однако это не следует путать с не (хост против или туз).
Аргументы выражения могут быть переданы ТСРйитр либо как один аргумент, либо как несколько аргументов, в зависимости от того, что более удобно. Как правило, если выражение содержит метасимволы Shell, проще передать его как один аргумент с котировкой. Несколько аргументов конкатенируются с пробелами перед их анализом.
Примеры Tcpdump
Заход в серию tcpdump
Вышеупомянутая команда tcpdump используется для печати всех пакетов, прибывающих или выходящих из захода солнца. tcpdump host helios и (hot или ace )
Этот пример tcpdump печатает трафик между Гелиос и либо горячей или же Туз. tcpdump ip host ace, а не helios
Вы можете использовать эту команду tcpdump для печати всех IP-пакетов между туз и любой хост, кроме Гелиос. tcpdump net ucb-ether
В приведенном выше примере tcpdump печатает весь трафик между локальными хостами и хостами в Беркли. tcpdump 'шлюз snop и (порт ftp или ftp-data)'
Следующий пример команды tcpdump используется для печати всего FTP-трафика через интернет-шлюз Снуп , Обратите внимание, что выражение цитируется для предотвращения неправильной интерпретации оболочки в круглых скобках. tcpdump ip и не сеть LocalNet
В приведенном выше примере tcpdump команда печатает трафик, не полученный из локальных хостов и не предназначенный для него. tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0, а не src и dst net LocalNet '
В приведенном выше примере tcpdump команда используется для печати начальных и конечных пакетов (пакетов SYN и FIN) каждой TCP-беседы, которая включает нелокальный хост. tcpdump 'шлюз snup и ip 2: 2> 576'
Вышеупомянутая команда будет печатать IP-пакеты длиной более 576 байт, отправленных через шлюз Снуп. tcpdump 'ether 0 & 1 = 0 и ip 16> = 224'
Команда tcpdump, показанная выше, печатает IP-широковещательные или многоадресные пакеты, которые были не отправляется через широковещательную или многоадресную рассылку Ethernet. tcpdump 'icmp icmptype! = icmp-echo и icmp icmptype! = icmp-echoreply'
В этом последнем примере tcpdump команда печатает все ICMP-пакеты, которые не являются эхо-запросами или ответами (т. Е. Не ping-пакеты). Выход ТСРйитр зависит от протокола. Ниже приводится краткое описание и примеры большинства форматов. Заголовки уровня канала, Если задана опция -e, загорается заголовок уровня ссылки. В сетях Ethernet печатаются исходные и целевые адреса, протокол и длина пакета. В сетях FDDI опция «-e» вызывает ТСРйитр для печати поля «frame control», исходного и целевого адресов и длины пакета. (Поле управления кадрами управляет интерпретацией остальной части пакета. Обычными пакетами (такими как те, которые содержат IP-дейтаграммы) являются «асинхронные» пакеты с приоритетом от 0 до 7: например, `async4». Предполагается, что такие пакеты содержат пакет управления логической связью 802.2 (LLC); заголовок LLC печатается, если он не дейтаграмму ISO или так называемый пакет SNAP. В сетях Token Ring опция '-e' вызывает ТСРйитр для печати полей «контроля доступа» и «управления кадрами», адресов источника и получателя и длины пакета. Как и в сетях FDDI, предполагается, что пакеты содержат пакет LLC. Независимо от того, указан ли параметр «-e» или нет, информация о маршрутизации источника печатается для пакетов с маршрутизацией с источником. (N.B .: Следующее описание предполагает знакомство с алгоритмом сжатия SLIP, описанным в RFC-1144.) На SLIP-каналах распечатывается индикатор направления («I» для входящего, «O» для исходящего), тип пакета и информация о сжатии. Сначала печатается тип пакета. Эти три типа IP , utcp , а также CTCP , Никакая дополнительная информация о ссылках не будет напечатана для IP пакеты. Для TCP-пакетов идентификатор соединения печатается по типу. Если пакет сжимается, его кодированный заголовок печатается. Специальные случаи распечатываются как* S + N а также* SA + N , где N это количество, на которое изменился порядковый номер (или порядковый номер и ack). Если это не особый случай, печатаются ноль или более изменений. Изменение обозначается U (срочный указатель), W (окно), A (ack), S (порядковый номер) и I (идентификатор пакета), затем дельта (+ n или -n) или новое значение (= п). Наконец, печатается количество данных в пакетной и сжатой длине заголовка. Например, следующая строка показывает исходящий сжатый TCP-пакет с неявным идентификатором соединения; ack изменился на 6, порядковый номер - на 49, а идентификатор пакета - на 6; есть 3 байта данных и 6 байтов сжатого заголовка: O ctcp * A + 6 S + 49 I + 6 3 (6)
Пакеты Arp / rarp, Выход Arp / rarp показывает тип запроса и его аргументы. Этот формат не требует пояснений. Вот краткий образец, взятый с начала «rlogin» от хоста rtsg принимать гостей CSAM : arp who-csam tell rtsgarp ответ csam is-at CSAM
В первой строке говорится, что rtsg отправил пакет arp с запросом Ethernet-адреса интернет-хоста csam. Csam отвечает своим Ethernet-адресом (в этом примере адреса Ethernet указаны в шапках и интернет-адресах в нижнем регистре). Это выглядело бы менее излишним, если бы мы это сделали tcpdump -n : arp who-has 128.3.254.6 tell 128.3.254.68arp ответ 128.3.254.6 is-at 02: 07: 01: 00: 01: c4
Если бы мы это сделали tcpdump -e , тот факт, что первый пакет передается, а второй - точка-точка, будет видимым: RTSG Broadcast 0806 64: arp who-csam tell rtsgCSAM RTSG 0806 64: arp ответ csam is-at CSAM
Для первого пакета это говорит, что адресом источника Ethernet является RTSG, конечным пунктом является широковещательный адрес Ethernet, поле типа содержит шестнадцатеричный 0806 (тип ETHER_ARP), а общая длина - 64 байта. TCP-пакеты (N.B.: Следующее описание предполагает знакомство с протоколом TCP, описанным
Формат вывода Tcpdump




