Познакомьтесь с инструментом анализа сетевых пакетов Tshark в одной статье: более 100 изображений и более 100 примеров, которые легко освоить
Познакомьтесь с инструментом анализа сетевых пакетов Tshark в одной статье: более 100 изображений и более 100 примеров, которые легко освоить

1. Предисловие

tsharkкакWiresharkподдержка подкоманд,Поддержка большинства функций Wireshark в сценарии CLI.,Для пакетной обработки、фильтр фильтр、Экспорт、Статистический анализ、Индивидуальный вывод и другие возможности.

конечно,tshark имеет возможность одновременно захватывать и анализировать пакеты.,Просто поймите, что tshark — это CLI-версия Wireshark.,Но в основном индустрия будет использовать tcpdump для захвата пакетов в Linux.,И он может охватывать все сценарии перехвата пакетов.,Если вы хотите знать, как использовать tcpdump,Вы можете ознакомиться с аннотацией автораЭта статья

Поэтому в этой статье больше не будет описываться использование tshark для перехвата пакетов, а основное внимание будет уделено тому, как tshark можно использовать с инструментами обработки текста, такими как grep, sed, awk и т. д., для анализа отфильтрованных сообщений, пакетной обработки сообщений и т. д. и получить любое содержимое сообщения, которое мы хотим. Это вещи, которые графический Wireshark не может сделать, и это неотъемлемые преимущества CLI.

2. Способы установки для каждого дистрибутива

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

Дистрибутив

Команда установки

CentOS

yum install wireshark -y

Debian/Ubuntu

apt install wireshark -y

Archlinux

pacman -Syu wireshark

Gentoo

USE="tshark" emerge --ask wireshark

Если это клиент Windows, просто установите Wireshark. Tshark будет установлен по пути, где по умолчанию находится Wireshark.

3. Варианты использования и описания параметров

1.Чтение файлов сообщений без какой-либо фильтрации(-r|--read-file

использовать-r|--read-fileФайл захвата пакета чтения параметров:

Язык кода:shell
копировать
tshark -r <filename>

Просто распечатает сообщение из файла пакета.,То, что вы видите, — это полное трехстороннее рукопожатие TCP и четырехэтапный волновой процесс. В этой статье основное внимание уделяется обработке и анализу захваченных пакетов.,поэтому-rПараметры будут использоваться в последующих примерах.。

2. Отключить обратный анализ (-n/-N)

1) Отключить весь обратный анализ (-n)

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

Язык кода:shell
копировать
tshark -n -r <filename>

2) Разобрать порт транспортного уровня (-N t)

Отличается от -n,-NПараметры могут точно контролировать, какие уровни анализируются.,Форматдля:-N <Обратный анализflag>,значение флага и значение следующие:

значение флага

значение

d

Включить разрешение для DNS-пакетов

m

Включить разрешение MAC-адреса

n

Включить разрешение сетевых адресов

N

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

t

Включить разрешение портов транспортного уровня

v

Включить разрешение имен для идентификаторов VLAN.

Язык кода:shell
копировать
tshark -N t -r <filename>

Это не сложно увидеть,80Добавлен перед портомhttpпротоколлоготип,и37546дляслучайный максимумпорт,Нет особого значения,Таким образом, ни один протокол, соответствующий характеристикам, не был проанализирован.

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

Язык кода:shell
копировать
tshark -N n -N t -r <filename>

3. Декодирование вывода (-d)

Форматдля:-d <layer type>==<selector>,<decode-as protocol>

То есть функция «Декодировать как» в Wireshark декодирует и выводит определенный уровень протокола в соответствии с протоколом, указанным вручную.

Проще говоря, он отбирает пакеты, соответствующие условиям, анализирует и выводит эти пакеты в соответствии с указанным протоколом.

По умолчанию tshark автоматически декодирует пакеты данных на основе характеристик протокола и стандартов порта. Например, порт 443 автоматически преобразуется в SSL без указания параметра -d. Однако в некоторых случаях конкретный протокол может иметь несколько вариантов или после расширения. , или порт настроен, и существует несколько протоколов, которые соответствуют характеристикам, полученным в результате анализа функций протокола, и автоматическое декодирование tshark может выбрать только один из них, тогда будет полезно вручную указать синтаксический анализ протокола.

осуществлятьtshark -d --helpУсловия фильтрации, поддерживающие декодирование ипротокол:

Язык кода:shell
копировать
tshark -d --help|&grep tcp  # Фильтровать фильтры, связанные с TCP

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

Например, декодируйте и выведите порт TCP 80 в протокол ssh:

Язык кода:shell
копировать
tshark -r <filename> -d 'tcp.port==80,ssh'

Это позволит применить протокол ssh для анализа и декодирования сообщений, соответствующих условиям, а затем вывести их на консоль.

Но до декодирования это на самом деле обычный HTTP-поток:

Или декодируем DNS-сообщения в протоколы rtp и quic соответственно:

Язык кода:shell
копировать
tshark -r dns.pcap -d 'udp.port==53,rtp'
tshark -r dns.pcap -d 'udp.port==53,quic'

tshark будет декодировать пакеты, соответствующие характеристикам указанному нами протоколу,Конечно, его нельзя анализировать по протоколу.,напримерudp.port==80,httpВоляudpпорт80Пакет декодируется вHTTPпротокол Это не существует,http — это реализация, основанная на TCP,Не в стеке протоколов,Невозможно декодировать.

Приведенное выше декодирование используется только в качестве примера использования и не имеет никакого значения.

Исходное сообщение — DNS, и tshark автоматически помог нам расшифровать и адаптировать его к правильному протоколу:

4. Вывод в определенный формат (-T)

Укажите вывод Форматможет быть:ek|fields|json|jsonraw|pdml|ps|psml|tabs|text

Например, вывод в формате json может быть:

Язык кода:shell
копировать
tshark -n -r <filename> -T json

вывод формата ek:

Язык кода:shell
копировать
tshark -n -r <filename> -T ek

Формат ek: массив Elasticsearch, который представляет собой формат пакетной записи в Elasticsearch.

вfieldsФормат Нужно сотрудничать-eПриходитьиспользовать,нельзя использовать отдельно,См. ниже для конкретного использования.-eиллюстрировать。

5. Вывести указанные поля сообщения (-e)

-eИспользуется для указания определенной части сообщенияпротокол Поле,Давать-TПараметры Выход процессадляфинальный Формат。

Например, требуются только поля количества кадров сообщений, IP-адреса, порта, протокола TCP или IP, а конечным результатом являются поля, которые могут быть:

Язык кода:shell
копировать
tshark -n -r <filename> -e 'frame.number' -e 'ip.addr' -e 'tcp.port' -e tcp -T fields
tshark -n -r <filename> -e 'frame.number' -e 'ip.addr' -e 'tcp.port' -e ip -T fields

Среди них ip.addr и tcp.port можно разделить на IP-адрес источника (ip.src), IP-адрес назначения (ip.dst), порт источника TCP (tcp.srcport) и порт назначения TCP (tcp.dstport As). пока вы. По сути, все поля, которые можно использовать в качестве условий фильтра в Wireshark, можно представить в формате ek:

Язык кода:shell
копировать
tshark -n -r <filename> -e 'frame.number' -e 'ip.src' -e 'ip.dst' -e 'tcp.srcport' -e 'tcp.dstport' -e ip -T ek 

в то же время,Вы также можете присоединиться-E header=yпараметр,указать поле вывода,Первая строка также соответствует значению поля выходного заголовка.,пройти позжеcolumnкоманда для выравнивания Формат:

Язык кода:shell
копировать
tshark -n -r <filename> -E header=y -e 'frame.number' -e 'ip.src' -e 'ip.dst' -e 'tcp.srcport' -e 'tcp.dstport' -e ip -T fields|column -t

6. Установите поле управления выходом (-E)

когда прошло-Tпараметр Приходитьвыход特定Форматчас,Могу сотрудничать-Eпараметр Приходить设置一些Параметры。

-EМогу ответитьизпараметриметь:

Опции параметров

по умолчанию

значение

bom=y|n

n

Перед выводом добавьте метку порядка байтов UTF-8 (шестнадцатеричный ef, bb, bf);

header=y|n

n

Распечатайте заголовок имени поля, используя -e в качестве первой строки вывода;

separator=/t|/s|\<character>

/t

Установить разделитель полей;

occurrence=f|l|a

a

Распечатайте первое, последнее или все вхождения каждого поля;

aggregator=,|/s|\<character>

,

Устанавливает символ-разделитель, используемый в каждом поле.

quote=d|s|n

n

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

Вот несколько примеров.

1)bom=y|n

bom (метка порядка байтов) — это метка порядка байтов, вставляемая в начало файла Unicode, закодированного в UTF-8, UTF16 или UTF-32, для идентификации типа кодировки файла Unicode. Для UTF-8 спецификация не требуется, и этот параметр обычно не используется, если не существует такого сценария требуемого формата.

проходить-E bom=y Чтобы включить спецификацию, tshark вставит тег спецификации в поле управления.

Например, в этой команде мы указываем печать определенных полей и вставку формата bom через параметр bom=y:

Язык кода:shell
копировать
tshark -n -r <filename> -E bom=y -E header=y -e 'frame.number' -e 'ip.src' -e 'ip.dst' -e 'tcp.srcport' -e 'tcp.dstport' -e ip -T fields

Нетрудно найти путем сравнения,После включения бона,bomFormat будет вставлен в начало вывода.,проходитьgrep-r $'\xef\xbb\xbf'Эта строка также может быть сопоставлена。

2)header=y

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

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

Язык кода:shell
копировать
tshark -n -r <filename> -E header=y -e 'tcp.seq_raw' -e 'ip.src' -e 'ip.dst' -e 'tcp.srcport' -e 'tcp.dstport' -e ip -T fields 

3)separator=/t|/s|\<character>

Укажите разделитель полей, по умолчаниюдля/t,/s можно указать,то есть одно пространство,или или другие настроенные персонажи.

Установите разделитель на два /ts:

Язык кода:shell
копировать
tshark -n -r <filename> -E separator=/t/t -e 'tcp.seq_raw' -e 'ip.src' -e 'ip.dst' -e 'tcp.srcport' -e 'tcp.dstport' -e ip -T fields

Установите разделитель #:

Язык кода:shell
копировать
tshark -n -r <filename> -E separator=\# -e 'tcp.seq_raw' -e 'ip.src' -e 'ip.dst' -e 'tcp.srcport' -e 'tcp.dstport' -e ip -T fields

4)occurrence=f|l|a

распечатайте каждый Полеценитьпервый(f)、последний(l),все(а),Когда поле имеет несколько цен,по По умолчанию будут печататься все цены, вы можете использовать этот параметр, чтобы указать, какое число печатать.

Например, следующий пакет инкапсулирован посредством IPIP, поэтому IP имеет внутренний и внешний уровень:

На этом этапе мы используем tshark для обработки поля IP.,по умолчанию поведение возникновения является,То есть весь контент в поле вывода,Оба IP-адреса будут выведены:

Язык кода:shell
копировать
tshark -n -r <filename> -E header=y -Y 'icmp.seq==21' -e 'icmp.seq' -e 'ip.src' -e 'ip.dst' -T fields |column -t

На данный момент нам нужен только внутренний IP-адрес.,Можетпроходитьобозначениеoccurrence=lвыполнить:

Язык кода:shell
копировать
tshark -n -r <filename> -E header=y -E occurrence=l -Y 'icmp.seq==21' -e 'icmp.seq' -e 'ip.src' -e 'ip.dst' -e ip -T fields |column -t

Нужен только внешний IP,проходитьобозначениеoccurrence=fвыполнить:

Язык кода:shell
копировать
tshark -n -r <filename> -E header=y -E occurrence=f -Y 'icmp.seq==21' -e 'icmp.seq' -e 'ip.src' -e 'ip.dst' -e ip -T fields |column -t

5)aggregator=,|/s|\<character>

Указывает разделитель, используемый в поле,Если поле имеет несколько ценителей,,по умолчанию будут разделены запятыми,Этот параметр можно использовать для указания разделителя.

Например, несколько полей IP на уровне IP можно разделить точкой с запятой:

Язык кода:shell
копировать
tshark -n -r <filename> -E header=y -E aggregator=\; -Y 'icmp.seq>=21' -e 'icmp.seq' -e 'ip.src' -e 'ip.dst' -T fields |column -t

6)quote=d|s|n

Устанавливает символ кавычки, используемый для окружения полей.,dвыражатьdouble,sвыражатьsingle,nвыражатьno,по умолчаниюдляn,то есть не используйте кавычки. Когда поля вывода необходимо заключить в кавычки,Этого можно добиться, установив этот параметр.

Заключите каждое выходное поле в двойные кавычки,проходитьquote=dПриходитьвыполнить:

Язык кода:shell
копировать
tshark -n -r <filename> -E header=y -E quote=d -e 'tcp.seq_raw' -e 'ip.src' -e 'ip.dst' -e 'tcp.srcport' -e 'tcp.dstport' -e ip -T fields|column -t

quote=sноиспользоватьодинарная кавычка:

Язык кода:shell
копировать
tshark -n -r <filename> -E header=y -E quote=s -E occurrence=f -Y 'icmp.seq>=21' -e 'icmp.seq' -e 'ip.src' -e 'ip.dst' -e ip -T fields |column -t

7. Вторичный анализ зависимостей (-2)

Укажите этот параметр,tsharkбудет основано на зависимостях контекстного сообщения(tsharkпозвони этодляtwo-pass,То есть проводится два анализа),для отображения соответствующей информации о связи сообщений,например:'response in frame #'、'reply in frame'、'TCP Port numbers reused'ждать Поле。

1) Сценарий повторного использования портов (повторное использование номеров TCP-портов)

Например, следующий пример при открытии в Wireshark отобразит зависимости контекста, такие как повторное использование порта (повторное использование номеров TCP-портов), предложенное во втором кадре:

Если вы используете tshark напрямую для его просмотра, такого сообщения нет:

плюс-2параметр,Пусть он проведет полный контекстный анализ и вычислит эти поля.,Он будет отображаться нормально:

Язык кода:shell
копировать
tshark -2 -n -r <filename>

2) Сценарий ICMP REPLY (icmp ответ #frame)

Другой пример — сценарий icmp. Без вторичного анализа — первый icmp. request,не будет отображаться в концеreply in 2(Прямо сейчасreplyсообщениедлявторой кадр)быстрое сообщение:

3) Сценарий реорганизации фрагмента (собран в #frame)

Или в сценарии фрагментации, если вы пингуете большой пакет ICMP и превышаете mtu, он будет фрагментирован и передан. После открытия Wireshark отображается следующее:

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

Открытие его в tshark:

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

Язык кода:shell
копировать
tshark -n -r <filename> -2

Если это протокол TCP, два конца согласовывают минимальный размер MSS (исключая заголовок TCP + заголовок IP) в первые два раза трехстороннего рукопожатия (фазы SYN и SYN, ACK). Последующие интерактивные пакеты этого протокола. TCP-поток превышает MSS. Он передается фрагментами.

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

8. Установите формат временной метки (-t)

0) Обзор

Поддерживаемые форматы и описания следующие:

Формат

иллюстрировать

a

Абсолютное время, фактическое время захвата пакета, не отображает дату;

ad

Абсолютное время с периодом день отображается в виде: ГГГГ-ММ-ДД;

adoy

Абсолютное количество дней в части Год,Формат отображения: ГГГГ-ДЕНЬ;

d

дельта-время, временной интервал относительно предыдущего кадра;

dd

delta_displayed time — временной интервал относительно предыдущего отображаемого кадра;

e

Время эпохи/Unix-время, количество секунд, отсчитанных с 1 января 1970 г. 00:00:00 (UTC);

r

Относительное время относительно первого пакета;

u

Время UTC, дата не отображается;

ud

Время UTC с датой в формате ГГГГ-ММ-ДД;

udoy

Время по всемирному координированному времени с датой, количество дней — это абсолютное количество дней в этом году, отображаемое как: ГГГГ-ДЕНЬ.

Когда не указано умолчаниюдляr(relative),То есть относительное время относительно первого пакета.

1) Абсолютное время текущего часового пояса (a)

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

Язык кода:shell
копировать
tshark -n -r <filename> -t a

2) Абсолютное время текущего часового пояса с датой (объявление)

При необходимости вaотображается на основедень Ожидать,ноиспользоватьad

Язык кода:shell
копировать
tshark -n -r <filename> -t ad

3) Абсолютное количество дней в году (адой)

Когда вам нужно отобразить количество дней как абсолютное количество дней в этом году (Day Of Year,Какие дни этого Года),использоватьadoy

Язык кода:shell
копировать
tshark -n -r <filename> -t adoy

Хотя этот сценарий встречается редко, разумно, если он существует, и он удобен для сложения и вычитания дат.

4) Временной интервал относительно предыдущего сообщения (д)

Эквивалентно временному интервалу предыдущего сообщения,ноиспользоватьd

Язык кода:shell
копировать
tshark -n -r <filename> -t d

5) Относительно временного интервала последнего отображаемого сообщения (дд)

этотпараметриdРазница в том,,Его эквивалентное время — это относительное время предыдущего сообщения, выведенного на экран.

напримериспользоватьddпоказывать所иметьсообщениеизчасмежду:

Язык кода:shell
копировать
tshark -n -r <filename> -t dd

Посмотрите на это так,показыватьизчасмеждуиdпочти то же самое,Но если я фильтрую только HTTP-запросы,Сноваиспользоватьdd

Язык кода:shell
копировать
tshark -n -r <filename> -Y 'http' -t dd

Разница очевидна,когдаиспользоватьHTTP只фильтр到两个сообщениечас(frame 4иframe 6):

  • проходитьddвыходизчасмежду,frame 4каквыходпервый Сумкакакчасмежду参考系,Итак, время 0,frame 6показыватьизчасмеждудаотносительноframe 4измежду隔часмежду;
  • проходитьdвыходизчасмежду,frame 4изчасмеждудаотносительноframe 3измежду隔часмежду,frame 6изчасмеждуотносительноframe 5измежду隔часмежду。

так Это не сложно увидеть,ddиззначениеда:delta displayed,Относительное время отображения сообщения.

6) Время эпохи/Unix-время (e)

Время эпохи/Unix-время, количество секунд с 1 января 1970 г. 00:00:00 (UTC):

Язык кода:shell
копировать
tshark -n -r <filename> -t e

7) Относительное время относительно первого пакета (r)

Показать относительно первого пакета(frame 1)изотносительночасмежду,но Можетиспользоватьr

Язык кода:shell
копировать
tshark -n -r <filename> -t r

кпоследний Сумка(frame 10)дляпример,показыватьчасмеждумежду隔для:0.002799,На самом деле это относительно времени первого пакета.,проходитьcapinfos也Может看出首尾Сумкаиз差距刚好ждать于这个часмеждумежду隔:

8) Не отображать время UTC даты (u)

Отображается по времени UTC,и не отображает период дня,но Можетиспользоватьu

Язык кода:shell
копировать
tshark -n -r <filename> -t u

9) Отображение времени UTC даты (ud)

Отображение времени UTC с датой на основе UTC:

Язык кода:shell
копировать
tshark -n -r <filename> -t ud

10) UTC время абсолютных дней года (удой)

Отображать время UTC с датой, где количество дней отображается как День. Of YearФормат,Прямо сейчаскнига Годстепеньиз Дни:

Язык кода:shell
копировать
tshark -n -r <filename> -t udoy

9. Фильтровать пакеты (-Y)

Эта опция обычно используется для фильтрации и анализа пакетов, соответствующих выражению фильтра. Она эквивалентна функции панели фильтров в верхней части Wireshark.

В некоторых примерах выше,Фактически его использовали-Yварианты фильтрации сообщений,Если написанное вами выражение фильтра соответствует синтаксису Wireshark.,может быть выполнено нормально,wiresharkГрамматика может относиться кОфициальная документация

1) Пример 1: фильтрация по http.host

Если вы хотите отфильтровать http-хост по определенному значению, это может быть:

Язык кода:shell
копировать
tshark -n -r <filename> -Y 'http.host == "web-server1"'

2) Пример 2. Фильтрация повторной передачи TCP, быстрой повторной передачи и пакетов DUP ACK.

Фильтрация повторной передачи TCP, быстрой повторной передачи и пакетов DUP ACK, которые могут быть:

Язык кода:shell
копировать
tshark -n -r <filename> -Y 'tcp.stream eq 2 && ( tcp.analysis.retransmission or tcp.analysis.fast_retransmission or tcp.analysis.duplicate_ack )' -t d

проходить-t dПриходитьпоказыватьотносительно上一帧изчасмежду,tcp.stream eq 2уточнить статью 3TCPпоток。

3) Пример 3: Фильтрация сообщений ARP

Фильтруйте сообщения ARP и удаляйте определенные кадры, которые могут быть:

Язык кода:shell
копировать
tshark -n -r <filename> -Y 'arp && frame.number in {9,10,197,208,216}' -t d

4) Пример 4: Фильтрация запросов на первое рукопожатие

При первом рукопожатии отправляется только SYN, а бит ACK равен 0, поэтому правило фильтрации можно записать так:

Язык кода:shell
копировать
tshark -n -r http-keep-alive.pcap -Y 'tcp.flags.syn==1&&tcp.flags.ack==0'

Вышеупомянутое — всего лишь несколько примеров. Когда дело доходит до использования фильтрации в различных сценариях, -Y может полностью ее поддерживать.

10. Статистический анализ сообщений (-z)

использоватьtshark -z helpМожет查看支持из Статистический анализ Параметры。

На данный момент существует 169 вариантов статистического анализа, но не многие из них широко используются.

Вот несколько примеров наиболее распространенных из них:,Если сценарий, с которым вы столкнулись, требующий статистического анализа, не входит в число примеров сценариев,Такпроходить-z helpдля просмотра матчейизсцена Параметры Прямо сейчас Может。

1) Статистический анализ IP-сессий (conf,ip)

Нужна статистика сеансов'conv,'какпрефикс,Это означает разговор.

Возьмите этот поток TCP в качестве примера для подсчета сеансов:

Язык кода:shell
копировать
tshark -n -r <filename> -z 'conv,ip'

Вы можете использовать параметр -q, чтобы он выводил только статистические результаты, а не отображал сообщения:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z 'conv,ip'

Если это адрес ipv6,Изменить на-z 'conv,ipv6'Прямо сейчас Может。

Конечно, вы также можете написать правила фильтрации после статистических результатов, например, считать результаты только первого потока:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z conv,ip,tcp.stream==0

2) Статистический анализ TCP-сессий (conf, tcp)

Единственное отличие от первого примера — уровень статистики.,conv,ip статистикаIPслой,Такconv,tcpностатистикаtcpголова,Поскольку это уровень TCP,Должен быть порт:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z conv,tcp

Конечно, он также поддерживает параметры фильтрации:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z conv,tcp,tcp.port==443

Или мне просто нужна статистика для второго потока:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z conv,tcp,'tcp.stream eq 2'

3) Статистический анализ UDP-сессий (conv, udp)

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

Язык кода:shell
копировать
tshark -n -q -r <filename> -z conv,udp

Если правило фильтрации содержит несколько записей или пробелов, его можно заключить в одинарные кавычки:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z conv,udp,'udp.port in {8000,8803}'

4) Статистический анализ иерархии DNS (dns, дерево)

Анализ информации об иерархической структуре DNS может быть:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z dns,tree

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

Конечно, он также поддерживает параметры фильтрации, такие как подсчет только DNS-запросов baidu.com, которые могут быть:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z dns,tree,dns.'qry.name == baidu.com'

5) Статистический анализ IP конечных точек (endpoints, ip)

Конечная точка будет фокусироваться только на передаче данных между источником и получателем в одном пакете.

Например, для статистики на уровне IP входящий и исходящий трафик и объем пакетов каждого IP могут быть:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z endpoints,ip

conv будет обращать внимание на всю сессию.

Конечно, он также может указать правила фильтрации, например подсчет только данных, связанных с передачей TLS:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z endpoints,ip,'tls'

6) Статистический анализ конечных точек TCP (endpoints, tcp)

Размеры TCP-заголовка одного пакета будут проанализированы и обобщены статистические данные:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z endpoints,tcp

Поскольку это транспортный уровень TCP, очевидно, что там будут порты.

Таким же образом он также поддерживает указание правил фильтрации. Фильтрация TLS или данных с портами связи 58865 и 5228 может быть:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z endpoints,tcp,'tls||tcp.port in {58865,5228}'

7) Статистический анализ конечных точек UDP (endpoints, udp)

Очень хорошо, вы уже можете сделать выводы из одного экземпляра и статистически проанализировать данные конечной точки UDP:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z endpoints,udp

Укажите правила фильтрации, чтобы фильтровать только данные, относящиеся к DNS:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z endpoints,udp,dns

8) Сводка вывода в экспертном режиме (эксперт)

Функция экспертной информации, соответствующая Wireshark, отображается в Wireshark следующим образом:

Реализация на tshark:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z expert

Он также поддерживает указание параметров фильтрации, например анализ только третьего потока, который может быть:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z expert,'tcp.stream==2'

Уведомление:если неда Полныйизпоток(например ОтсутствующийTCPтри рукопожатия),Тогда вывода может не быть.

Фильтровать статистику по уровням предупреждений, которые могут быть:

Язык кода:shell
копировать
tshark -n -q -r <filename> -z expert,'Warns'

9) Отображение процесса связи (потока) двух конечных точек в виде графа трафика.

переписыватьсяwiresharkизFlow GraphФункция,То есть функция отображения блок-схемы,Вы можете нарисовать диаграмму общения для всего процесса общения.,На Wireshark изображение выглядит следующим образом:

Тогда реализация в tshark может быть:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z flow,tcp,network

Как видите, tshark использует символы ASCII для вывода таблиц, что не является настоящим графическим интерфейсом.

Время, Wiresharkпо умолчаниюдаadформа,если ты хочешь,конечно Можетпроходить-t adуказать。

потокграфикаизпараметр Форматдля:flow,name,mode[,filter]

flowдазафиксированный Поле,nameценитьобъемдля:

  • любой: все сообщения
  • icmp:icmp
  • icmpv6:icmpv6
  • lbm_uim:UIM
  • tcp:TCP

modeценитьобъемдля:

  • стандарт: все адреса
  • сеть: сетевой адрес

,flterнодляспецифическийизфильтр规но,Просто соблюдайте синтаксис Wireshark.

Давайте рассмотрим еще один пример графического отображения процесса ICMP-взаимодействия:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z flow,icmp,network

Вы можете видеть, что есть два ICMP. requestпереписыватьсядваreply,Но информационное поле, связанное с сообщением,Только хвост ответного сообщения показывает, на какой запрос направлен ответ.,request in 2выражатьвторой кадр,request in 6выражать Шестой кадр。

В сочетании со сценарием вторичного анализа (двухпроходным), упомянутым ранее.,Возможно пожелание уточнить-2параметр Посмотрите эффект:

Язык кода:shell
копировать
tshark -q -2 -n -r <filename> -z flow,icmp,network

Видно, что ответ, соответствующий запросу, будет полностью заполнен в каком кадре.

конечно,Наконец, вы можете указать правила фильтрации,напримерфильтрicmp.seq==3

Язык кода:shell
копировать
tshark -q -2 -n -r <filename> -z flow,icmp,network,icmp.seq==3

не хочупроходить-Yуказатьфильтр规но,не вступит в силу:

10) Отображение содержимого потока TCP/UDP между двумя узлами (следуйте)

этот Параметры Форматдля:follow,prot,mode,filter[,range]

followдазафиксированный Поле,protвыражатьпередача инфекциипротокол(Protocols),Возможный диапазон следующий:

ценить

значение

tcp

TCP-протокол

udp

UDP-протокол

dccp

Протокол DCCP

tls

TLS или протокол SSL

http

HTTP-потоковая передача

http2

http2-поток

quic

быстрый поток

modeПриходить Укажите вывод Формат,ценитьследующее:

ценить

значение

ascii

Вывод формата ASCII, непечатаемые символы представлены точками.

ebcdic

Формат вывода EBCDIC,Непечатаемые символы обозначаются точками.

hex

Шестнадцатеричные данные и данные ASCII со смещением

raw

Шестнадцатеричные данные

yaml

YAMLФормат

filterиспользоватьуказать要показыватьизпоток,Существует три типа Формата:

Формат

значение

ip-addr0:port0,ip-addr1:port1

Укажите IP-адрес и пару портов TCP, UDP или DCCP (порт TCP используется для TLS, HTTP и HTTP2; QUIC не поддерживает сопоставление адреса и порта);

stream-index

Укажите индекс потока для TCP, UDP, DCCP, TLS и HTTP (TLS и HTTP используют индекс потока TCP);

stream-index,substream-index

Укажите потоки и подпотоки для HTTP/2 и QUIC, поскольку они используют мультиплексирование/долгоживущие соединения (поток TCP и индекс потока HTTP/2 для HTTP/2, номер соединения QUIC и идентификатор потока).

,rangeиспользовать于обозначение应该показыватьпотокизкакие части。

①Пример 1. Отображение содержимого первого потока TCP в шестнадцатеричном формате.
Язык кода:shell
копировать
tshark -q -n -r <filename> -z "follow,tcp,hex,0"

можно ясно увидеть,Node0проситьNode1из80порт,Node0ОтправилHTTP GETпросить ДаватьNode1,Получил это позжеNode1из200 OK Код состояния ответа HTTP, верхняя и нижняя части разделены несколькими пробелами для облегчения различения.

②Пример 2: Отображение содержимого потока TCP между IP1:PORT1 и IP2:PORT2.
Язык кода:shell
копировать
tshark -q -n -r <filename> -z "follow,tcp,ascii,IP1:PORT1,IP2:PORT2"

Этот поток является потоком TLS, и данные зашифрованы, поэтому никакого значимого контента не видно. На скриншоте легко увидеть, что правило фильтра будет в дальнейшем преобразовано и заполнено в полный синтаксис фильтрации Wireshark в соответствии с написанными нами правилами, а именно:

Язык кода:shell
копировать
((ip.src eq 192.168.1.3 and tcp.srcport eq 58863) and (ip.dst eq 101.91.37.19 and tcp.dstport eq 443)) or ((ip.src eq 101.91.37.19 and tcp.srcport eq 443) and (ip.dst eq 192.168.1.3 and tcp.dstport eq 58863))
③Пример 3. Отображение содержимого первого HTTP в первом TCP-соединении.
Язык кода:shell
копировать
tshark -q -n -r <filename> -z "follow,http,hex,0,1"

Первый HTTP — это GET, затем второй HTTP — ответ:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z "follow,http,hex,0,2"

Если это длинное соединение и в одном TCP-соединении имеется несколько HTTP-запросов, просто измените последнее число:

В это время содержимое четвертого HTTP-запроса все еще фильтруется в первом потоке TCP (tcp.stream==0).

11) Статистический анализ состояния HTTP (http, stat)

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

Язык кода:shell
копировать
tshark -q -n -r <filename> -z http,stat

Вы можете видеть, что во всем сообщении 133 200 ОК, 1 404 кода состояния, 133 метода запроса GET и 1 POST.

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

Язык кода:shell
копировать
tshark -q -n -r <filename> -z http,stat,'tcp.stream==0'

12) Статистический анализ древовидной структуры HTTP (http,tree)

Статистика распределения HTTP-пакетов. Выходные данные — это код состояния ответа и метод запроса:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z http,tree

конечно Он также поддерживает добавление правил фильтрации в конце.。еслидаHTTP2протокол,ноиспользоватьhttp2,tree

13) Статистический анализ URI-путей HTTP-запросов (http_req, дерево)

http_req,tree Будет учитываться только путь к ресурсу URI, участвующий в запросе, а на ответ не будет обращено внимание:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z http_req,tree

Укажите правила для фильтрации только данных первого TCP-соединения:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z http_req,tree,'tcp.stream==0'

14) Статистический анализ URL-адреса HTTP-запроса (http_seq, дерево)

иhttp_req,treeРазница в том,,Он автоматически завершит запрошенный сервер,Представлено как URL-путь:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z http_seq,tree

Также поддерживаются определенные правила фильтрации:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z http_seq,tree,'tcp.stream==0'

15) Статистический расчет HTTP-запросов и ответов (http_srv, дерево)

Для HTTP-запросов отображаемые значения — это IP-адрес сервера назначения и имя хоста сервера. Для ответа HTTP отображаемое значение представляет собой IP-адрес и статус сервера назначения:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z http_srv,tree

Он также поддерживает указание правил фильтрации в конце для статистической фильтрации первого потока:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z http_srv,tree,'tcp.stream==0'

16) Статистический анализ ICMP (icmp, srt)

Вычислите общее количество эхо-запросов ICMP, ответов, потерь и процентов потерь, а также минимальное, максимальное, среднее, медианное значение и выборочную статистику SRT со стандартным отклонением, возвращаемую пингом.

Язык кода:shell
копировать
tshark -q -n -r <filename> -z icmp,srt

Фильтровать статистику по определенному IP-адресу:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z icmp,srt,'ip.addr==xxx'

Если это адрес V6,ноиспользоватьicmpv6,srt

17) Статистическая иерархия протоколов и объем пакетов (io, phs)

Создайте статистику иерархии протоколов с указанием количества пакетов и байтов:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z io,phs

Считайте только первый поток TCP:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z io,phs,'tcp.stream==0'

18) Статистический анализ объёма пакета и размера байта (io, stat)

Форматдля:io,stat,interval[,filter]

вio,statдазафиксированныйиз,интервал представляет собой интервал времени,Можно указать секунды, доли секунды и микросекунды.,Если указано как 0,Статистика будет рассчитана для всех пакетов.

Подсчитайте объем пакета и размер всех пакетов данных:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z io,stat,0

Если вы хотите указать интервал в 10 секунд для статистики и считать только первый поток TCP, вы можете сделать следующее:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z io,stat,10,'tcp.stream==0'

19) Статистический анализ максимальных и минимальных средних значений определенного поля (MAX|MIN|AVG)

все ещедаio,stat,но полный Форматдля:io,stat,interval,"COUNT|SUM|MIN|MAX|AVG|LOAD(field)filter"

io,statдазафиксированный Параметры,intervalвыражатьмежду隔часмежду,Среди них COUNT|SUM|MIN|MAX|AVG|LOAD должны основываться на правилах фильтрации для составления статистики.,например:

Язык кода:shell
копировать
io,stat,0,'MAX(icmp.data_time_relative)icmp.data_time_relative'

Подсчитывается поле времени ответа icmp, и принимается максимальное значение MAX, 0 означает подсчет всех, независимо от интервалов.

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

Язык кода:shell
копировать
tshark -q -n -r <filename> -z io,stat,0,'MAX(icmp.data_time_relative)icmp.data_time_relative,'ip.addr==xxx''

Вы можете видеть, что максимальное значение составляет 0,69 с. Обратите внимание, что единица измерения — секунды.

Или, среди статистики первого TCP-соединения, самый длинный интервал между его предыдущими пакетами равен:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z io,stat,0,'MAX(tcp.time_delta)tcp.time_delta,tcp.stream==0'

Статистика по среднему и максимальному времени ответа HTTP в первом потоке TCP:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z io,stat,0,'AVG(http.time)http.time,tcp.stream==0'
Язык кода:shell
копировать
tshark -q -n -r <filename> -z io,stat,0,'MAX(http.time)http.time,tcp.stream==0'

Если правило фильтрации не указано (на рисунке выше tcp.stream==0), будут учитываться все пакеты, содержащие поле http.time.

Или посчитайте только максимальное время ответа HTTP, которое возвращает код состояния 200 OK:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z io,stat,0,'MAX(http.time)http.time and http.response.code == 200'

20) Статистическая доля IP-адресов (ip_hosts, дерево)

Здесь будут отображаться IP-адреса источника и назначения, а также процент, скорость отправки пакетов, время начала и т. д.:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z ip_hosts,tree

В конце укажите правила фильтрации, например, считать только пакеты с порядковым номером icmp меньше или равным 6 и считать только пакеты первого TCP-потока соответственно:

Язык кода:shell
копировать
tshark -q -n -r <filename> -z ip_hosts,tree,'icmp.seq <= 6'
Язык кода:shell
копировать
tshark -q -n -r <filename> -z ip_hosts,tree,'tcp.stream==0'

Если это адрес IPv6, используйте ipv6_hosts,tree

21) Статистика соотношения адресов источника и адресов назначения (ip_srcdst, дерево)

Различать адрес источника и адрес назначения,ноиспользоватьip_srcdst,tree

Язык кода:shell
копировать
tshark -q -n -r <filename> -z ip_srcdst,tree

Укажите правила фильтрации, чтобы фильтровать данные только через TCP-порт 8080:

Язык кода:shell
копировать
 tshark -q -n -r <filename> -z ip_srcdst,tree,'tcp.port in {8080}'

Если это адрес IPv6, используйте ip6_srcdst,tree

11. Полностью развернуть сообщение (-V)

-Vпараметр会完整展开сообщениеизкаждый Поле、Информация заголовка.

Например, в следующем примере запрос на первое рукопожатие расширен:

Язык кода:shell
копировать
tshark -n -r <filename> -V -Y 'tcp.flags.syn==1&&tcp.flags.ack==0&&frame.number<=5'

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

Например, мы можем использовать обычные правила, чтобы получить нужный URL-адрес прямой трансляции:

Язык кода:shell
копировать
tshark -n -r <filename> -Y 'http.request.method eq GET' -V | grep -Po '(?<=Full request URI:\s).*m3u8(?=])' |& sort -u

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

12. Сохраните сообщение (-w)

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

Например, чтобы отфильтровать первые 300 пакетов и HTTP-пакеты с IP-адресом A или B или портом назначения 38388, это может быть:

Язык кода:shell
копировать
tshark -n -r <filename> -Y 'frame.number<=300&&(ip.addr in {101.207.176.11,192.168.137.111}||tcp.dstport==38388)&&http'

Используйте параметр -w для сохранения в новый файл захвата пакетов http_in_300.pcap:

Язык кода:shell
копировать
tshark -n -r <filename> -Y 'frame.number<=300&&(ip.addr in {101.207.176.11,192.168.137.111}||tcp.dstport==38388)&&http' -w http_in_300.pcap

Размер нового файла перехвата пакетов, наконец, сохранен, составляет всего 4,4 КБ, а размер исходного файла — 516 МБ.

4. Резюме

tsharkкакwiresharkиз命令行版книга,Многие функции на самом деле тесно связаны друг с другом.,ноtsharkПредоставляет возможности командной строки,Очень полезно для автоматического анализа сценариев.,Автоматическая пакетная обработка файлов захвата пакетов может быть легко реализована.,и отобразить результаты анализа.

Фильтрация и анализ сетевых пакетов,Он предоставляет сетевым администраторам, экспертам по безопасности и разработчикам возможность получить более глубокое понимание сетевого протокола. Будь то мониторинг сетевого трафика, устранение неполадок, аудит безопасности или анализ протокола.,tsharkможет сыграть огромную роль。从基книгаиззахватыватьифильтр到高级изLuaсделанный на заказ,Он предоставляет широкий спектр функций и приложений.,Подходит для различных сценариев.

В этой статье подробно описаны использование и примеры использования каждого параметра.,Из-за ограниченности места невозможно описать все возможные варианты.,сетевой протоколкнига身具备多样性исложность。проходитьвладелецtsharkего использование,Разберем характеристики протокола,проходитьвернопротоколизпониматьиверноtsharkкнига身из Интегрируйте все,Я считаю, что все основные специалисты по устранению сетевых неполадок могут извлечь из этого пользу.

Поставляется с PDF-версией:

Познакомьтесь с инструментом анализа сетевых пакетов Tshark в одной статье: более 100 изображений и более 100 примеров, которые легко освоить.pdf
boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.