Вывод шестнадцатеричных данных в Tshark

WiresharkWiresharkBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь анализировать сетевые пакеты с помощью командной строки tshark из пакета Wireshark с выводом в шестнадцатеричном формате. Вы научитесь считывать файлы захвата пакетов (capture.pcap) с использованием флага -r и отображать исходные данные пакетов в шестнадцатеричном формате с помощью флага -x.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/protocol_dissection("Protocol Dissection") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/protocol_dissection -.-> lab-548923{{"Вывод шестнадцатеричных данных в Tshark"}} wireshark/packet_analysis -.-> lab-548923{{"Вывод шестнадцатеричных данных в Tshark"}} wireshark/commandline_usage -.-> lab-548923{{"Вывод шестнадцатеричных данных в Tshark"}} end

Чтение файла с использованием -r capture.pcap

На этом этапе вы научитесь считывать файл захвата пакетов с помощью командной строки tshark из пакета Wireshark с использованием опции -r. Это основной способ анализа предварительно захваченных данных сетевого трафика.

Перед началом важно понять, что файлы PCAP содержат исходные данные сетевого трафика, захваченные с сетевого интерфейса. Флаг -r позволяет указать файл захвата пакетов для чтения, что аналогично открытию документа с помощью текстового редактора. Мы будем использовать пример файла с именем capture.pcap, расположенный в каталоге ~/project.

  1. Сначала убедитесь, что вы находитесь в правильном каталоге. Это важно, так как tshark должен знать, где найти файл захвата:
cd ~/project
  1. Теперь используйте tshark для чтения файла захвата. Базовая команда без каких-либо фильтров покажет все пакеты в файле:
tshark -r capture.pcap

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

  • Номер пакета (показывает порядок захвата)
  • Временная метка (когда пакет был захвачен)
  • IP - адреса источника и назначения (кто отправил и принял пакет)
  • Протокол (какой тип сетевого взаимодействия это)
  • Длина пакета (сколько байт в пакете)
  • Основная информация о протоколе (детали, специфичные для каждого протокола)

Пример вывода (ваш фактический вывод может отличаться):

1 0.000000 192.168.1.1 → 192.168.1.2 TCP 66 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
2 0.000123 192.168.1.2 → 192.168.1.1 TCP 66 49234 → 443 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
3 0.000234 192.168.1.1 → 192.168.1.2 TCP 54 443 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0

Этот вывод показывает базовое TCP - рукопожатие между двумя хостами. Первый пакет с [SYN] указывает на запрос на установление соединения, второй с [SYN, ACK] - это ответ, а третий [ACK] завершает рукопожатие. Каждая строка представляет один сетевой пакет с его важными деталями, давая вам хронологическое представление о сетевом взаимодействии.

Включение шестнадцатеричного дампа с помощью -x

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

При работе с сетевым трафиком пакеты по сути представляют собой просто последовательности байтов. Флаг -x сообщает tshark отобразить:

  1. Стандартную информацию о заголовке пакета (например, адреса источника и назначения)
  2. Полное шестнадцатеричное представление исходных данных пакета
  3. ASCII - интерпретацию этих данных (если это применимо)

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

cd ~/project

Теперь проанализируем наш файл захвата пакетов (capture.pcap) с включенным шестнадцатеричным выводом:

tshark -r capture.pcap -x

Эта команда создает вывод, разделенный на три основных раздела для каждого пакета:

  1. Строка сводки, показывающая основную информацию о пакете
  2. Шестнадцатеричный дамп, показывающий исходные байты пакета
  3. ASCII - представление этих байтов (отображающее печатные символы)

Вот как выглядит типичный раздел вывода (сокращен для демонстрации):

1 0.000000 192.168.1.1 → 192.168.1.2 TCP 66 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
0000  00 1a 4b 12 34 56 00 1b 11 22 33 44 08 00 45 00   ..K.4V..."3D..E.
0010  00 34 12 34 00 00 80 06 78 9a c0 a8 01 01 c0 a8   .4.4....x.......
0020  01 02 01 bb c0 52 00 00 00 00 00 00 00 00 50 02   .....R........P.
0030  fa f0 00 00 00 00 00 00 00 00                     ..........

Шестнадцатеричное отображение организовано следующим образом:

  • Самый левый столбец (0000, 0010 и т.д.) показывает смещение байта в шестнадцатеричном формате
  • Средний раздел отображает 16 байтов данных пакета в каждой строке в шестнадцатеричном формате
  • Правый раздел показывает ASCII - представление символов (непечатаемые символы отображаются в виде точек)

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

Ограничение вывода до определенных кадров с помощью --hexdump frames

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

Опция --hexdump дает более точный контроль, чем базовый флаг -x. В то время как -x показывает шестнадцатеричные дампы для всех пакетов, --hexdump позволяет указать конкретно номера кадров, которые нужно отобразить. Это похоже на использование увеличительного стекла, которое показывает только те пакеты, которые вы хотите рассмотреть детально.

  1. Сначала убедимся, что мы находимся в правильном рабочем каталоге, где хранится наш файл захвата. Это гарантирует, что Tshark сможет найти файл, который мы хотим проанализировать:
cd ~/project
  1. Теперь используем Tshark для отображения шестнадцатеричных данных для конкретных кадров. Структура команды следующая:
    • -r capture.pcap считывает наш файл захвата пакетов
    • --hexdump frame=1-3 сообщает Tshark, что мы хотим видеть только кадры от 1 до 3
    • Знак равенства (=) связывает фильтр кадров с опцией шестнадцатеричного дампа

Запустите эту команду, чтобы увидеть кадры 1 - 3 в шестнадцатеричном формате:

tshark -r capture.pcap --hexdump frame=1-3

Эта команда создает вывод, показывающий:

  • Только три кадра, которые мы запросили (1, 2 и 3)
  • Полное шестнадцатеричное представление каждого кадра
  • Исходные байтовые данные без обычной сводной информации о пакете

Пример вывода (сокращен для демонстрации):

Frame 1: 66 bytes on wire
0000  00 1a 4b 12 34 56 00 1b 11 22 33 44 08 00 45 00   ..K.4V..."3D..E.
0010  00 34 12 34 00 00 80 06 78 9a c0 a8 01 01 c0 a8   .4.4....x.......
0020  01 02 01 bb c0 52 00 00 00 00 00 00 00 00 50 02   .....R........P.
0030  fa f0 00 00 00 00 00 00 00 00                     ..........

Frame 2: 66 bytes on wire
0000  00 1b 11 22 33 44 00 1a 4b 12 34 56 08 00 45 00   ..."3D..K.4V..E.
0010  00 34 ab cd 00 00 80 06 12 34 c0 a8 01 02 c0 a8   .4.......4......
0020  01 01 c0 52 01 bb 00 00 00 00 00 00 00 01 50 12   ...R..........P.
0030  ff ff 00 00 00 00 00 00 00 00                     ..........

Обратите внимание на ключевые различия по сравнению с предыдущими выводами:

  • Отображаются только те кадры, которые вы указали (без лишних пакетов)
  • Каждый кадр показывает свое полное шестнадцатеричное представление
  • В выводе пропускаются обычные строки сводки о пакете, что дает более чистые шестнадцатеричные данные для анализа

Анализ шестнадцатеричного вывода

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

  1. Сначала сгенерируем полный шестнадцатеричный дамп первых трех кадров. Используем следующую команду в директории проекта:
cd ~/project
tshark -r capture.pcap --hexdump frame=1-3

Эта команда считывает файл capture.pcap и отображает шестнадцатеричное представление кадров от 1 до 3. Опция --hexdump сообщает Tshark отображать как шестнадцатеричное, так и ASCII - представление рядом друг с другом.

  1. Тщательно изучите структуру вывода. Шестнадцатеричный дамп организован так, чтобы помочь вам визуализировать структуру пакета:
  • Каждый кадр начинается с указания его размера (например, "Frame 1: 66 bytes on wire"), показывающего общую длину пакета
  • Левый столбец показывает смещение байта (0000, 0010 и т.д.), которое помогает найти конкретные байты
  • Средний раздел отображает 16 байтов шестнадцатеричных данных в каждой строке, показывая фактическое содержимое пакета
  • Правый столбец показывает ASCII - представление печатаемых символов, полезное для обнаружения текстовых протоколов
  1. Теперь идентифицируем ключевые заголовки протоколов в шестнадцатеричном дампе. Сетевые пакеты имеют слоистую структуру, и мы можем увидеть это в шестнадцатеричном выводе:
## Ethernet header (first 14 bytes)
0000 00 1a 4b 12 34 56 00 1b 11 22 33 44 08 00

## IP header (next 20 bytes)
0010 45 00 00 34 12 34 00 00 80 06 78 9a c0 a8 01 01
0020 c0 a8 01 02

## TCP header (next 20 bytes)
0020 01 bb c0 52 00 00 00 00 00 00 00 00 50 02
0030 fa f0 00 00 00 00 00 00 00 00

Сначала идет заголовок Ethernet, затем заголовок IP и после этого заголовок TCP. Каждый заголовок протокола содержит определенные поля в фиксированных позициях, которые можно декодировать.

  1. Практикуемся в интерпретации некоторых общих значений, которые вы встретите в сетевых пакетах:
  • 08 00 указывает на IPv4 (EtherType) - это сообщает сетевой карте, какой протокол идет следующим
  • 45 показывает IPv4 с длиной заголовка 5 слов (цифра '4' - это версия IP, '5' - длина заголовка в 32 - битных словах)
  • c0 a8 01 01 - это 192.168.1.1 в шестнадцатеричном формате (каждая пара представляет один октет IP - адреса)
  • 01 bb - это порт 443 в десятичном формате (первый байт 01 равен 256, плюс bb равно 187, в сумме 443)

Помните, что сетевые протоколы используют big - endian порядок байтов, то есть самый значащий байт идет первым при интерпретации полей, состоящих из нескольких байтов.

Резюме

В этом лабораторном занятии вы научились использовать командную строку tshark из Wireshark для анализа файлов захвата пакетов и изучения шестнадцатеричных данных. В ходе упражнений показано, как с помощью опции -r считывать файлы PCAP для просмотра базовой информации о пакетах и как использовать флаг -x для получения подробных шестнадцатеричных дампов.

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