Перехватите их всех одним махом: используйте mergecap для объединения, преобразования, усечения и оптимизации файлов захвата сетевых пакетов.
Перехватите их всех одним махом: используйте mergecap для объединения, преобразования, усечения и оптимизации файлов захвата сетевых пакетов.

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

mergecapдляwiresharkвспомогательные команды,Это один из дополнительных инструментов, поставляемых вместе с установкой Wireshark.,mergecapИспользуется для объединения нескольких файлов пакетов.。

При ежедневном захвате сетевых пакетов и устранении неполадок шлюз или кластер могут состоять из нескольких машинных узлов, или узлы, проходящие по исходящему и входящему направлениям, несовместимы. В этом случае при захвате пакетов будет создано более одного файла пакета. каждый пакет Файл — это часть, которая проходит через один из узлов компонента. Чтобы полностью проанализировать весь поток, эти файлы пакета необходимо объединить в один файл пакета, чтобы получить полноценное интерактивное сообщение. Следовательно, пакет слияния mergecap — это не что иное. чем следующие сценарии:

  • Захваченные пакеты поступают от разных узлов шлюза (связанных с архитектурой сети) и для полноценного взаимодействия их необходимо объединить в один;
  • Установите соответствующие параметры при захвате пакетов (например, сохранение один раз каждые пять минут или сохранение один раз при заполнении 1G) и автоматически разбивайте их на несколько файлов. Их необходимо объединить в один во время анализа, чтобы предотвратить интерактивный трафик (например, поток TCP). распределяется по нескольким пакетным файлам, что способствует анализу.

В этой статье будут подробно рассмотрены варианты использования и варианты использования mergecap.

2. Установка

Linux

Дистрибутив

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

Archlinux

pacman -Sy wireshark-cli

Centos/Redhat

yum install -y wireshark

Debian/Ubuntu

apt install -y wireshark

Gentoo

emerge --ask wireshark

Windows

После установки Wireshark по умолчанию mergecap использует путь установки Wireshark:

Другие вспомогательные команды также находятся по этому пути:

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

MacOS

Предварительное условие: должен быть установлен homebrew.

Используйте homebrew для установки Wireshark. Mergecap будет установлен по умолчанию:

Язык кода:bash
копировать
brew install wireshark
brew install wireshark-chmodbpf

3. Анализ вариантов использования

1. Объединить несколько пакетов (-w)

Например, три вышеперечисленныхpcapфайл пакета,Полный поток TCP разделен на три файла:

  • 1.pcapдляпервыйивторой разTCPДве упаковки пожимают друг другу руки:SYNиSYN,ACK;
  • 2.pcapдлятретье рукопожатие:ACK + Начать махать: FIN, ACK Всего две упаковки;
  • 3.pcapдля Остальная часть полной волны(FIN,ACK и ACK), а также один ARP и два ICMP Запрос и ответ.

Если мы хотим проанализировать поток TCP в данный момент, анализ одного пакета не является полным TCP. Stream,Усложнить анализ,На данный момент вам необходимо объединить эти три пакета.длясумка;-wПараметр указывает имя выходного пакета.,На данный момент известно, что в текущем каталоге их три.файл пакета:1.pcap2.pcap3.pcap,слитьдляsum.pcap,Может быть:

Язык кода:bash
копировать
mergecap -w sum.pcap 1.pcap 2.pcap 3.pcap

Очевидно, что слияние более удобно для анализа всего потока TCP:

При этом поддерживается расширенная запись:

Язык кода:bash
копировать
mergecap -w sum.pcap *
  • Написание * объединит все файлы в текущем каталоге;
  • Писатьдля*.pcap,Тогда весь текущий каталог будет.pcapобъединить файлы в конце。

Если вам не нужно объединять в файлы,Просто выведите вSTDOUTиметь дело с,Например, трубыtsharktcpdumpЖдем прогрессаиметь дело санализировать,Так-wТакже поддерживает использование стандартных параметров."-",Например, после слияния вывести вSTDOUT,Тогда конвейер даетtsharkчитать:

Язык кода:bash
копировать
mergecap -w - * | tshark -n -r -

Та же причина,Также можно отправить наtcpdumpруководитьиметь дело с,Даже сделать некоторую фильтрацию по нему,Например, отфильтруйте первый поток TCP:

Язык кода:bash
копировать
mergecap -w - 1.pcap 2.pcap 3.pcap | tcpdump -n -r - 'tcp[12:4] & 0x0f000000 == 0'

2. Объединить в порядке пакетов, а не в порядке временных меток (-a)

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

Язык кода:bash
копировать
mergecap -a -w sum.pcap 3.pcap 1.pcap 2.pcap

Здесь в качестве демонстрации,умышленно312Нарушен порядок ввода параметров в трех пакетах.,слитьдляsum.pcap,можно увидетьsum.pcapПорядок пакетов строго соответствует входным параметрам.файл пакета顺序руководитьслить,На этом этапе снова выполните анализ потока TCP.,Невозможно прочитать весь поток.

Даже если его открыть с помощью Wireshark, он неполный:

Этот тип сценария слияния обычно возникает из-за того, что несколько пакетов захватываются на разных узлах.,время противоречиво,Если не добавлено-aпараметр,По умолчанию объединять в хронологическом порядке,Сумка тоже испорчена,И плюс-aДалее строго следуйте инструкциям по вводу параметров.файл пакета先后顺序руководитьслить,Этот вариант не часто используется и не рекомендуется.,Если только ты не знаешь, что делаешь.

3. Укажите длину усечения для слияния (-s)

Без этого параметра по умолчанию,Принятие одного кадра в качестве размера,Что такое фреймовый примитив,Какой кадр после слияния?,Объединить как есть。-sпараметр允许слить时把每个包руководить截断再слить,Например, для слияния берутся только первые 60 байт кадра.,Эта вторичная обработка также может значительно уменьшить размер файла пакета.,Удалите контент, который не поможет при устранении неполадок.

Например, следующий пример,Полный поток HTTP разделяется на два файла пакета.,http-1.pcapиhttp-2.pcap

Если вас не волнует производительность уровня 7 (HTTP),Вам нужно только проанализировать, нет ли каких-либо отклонений в самом TCP,Такслить时可以截断для60 байт

Язык кода:bash
копировать
mergecap -s 60 -w sum.pcap http-1.pcap http-2.pcap

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

1) Почему 60 байт вместо 54 байт?

По умолчанию 54-байтовый вариант: 14 (заголовок Ethernet) + 20 (заголовок IPv4) + 20 (заголовок TCP) = 54 байта:

Захват пакетов в Linux,И указать интерфейс захвата пакетовдля-i any,То есть захватить все интерфейсы,На этом этапе уровень канала передачи данных больше не может отображаться как Ethernet.,СкорееLinux cooked capture v2(SLL),Это псевдопротокол в Linux,Потому что не все интерфейсы на машине имеют одинаковый заголовок канального уровня.,ссылкаОписание официального сайта Wireshark

Эта голова занимает как минимум20 байт,На 6 байт больше, чем заголовок Ethernet:

2) Структура пакета подготовленного захвата Linux (SLL)

Linux cooked capture v2Структура пакета версийдля:

Язык кода:bash
копировать
+---------------------------+
|        Protocol type      |
|         (2 Octets)        |
+---------------------------+
|       Reserved (MBZ)      |
|         (2 Octets)        |
+---------------------------+
|       Interface index     |
|         (4 Octets)        |
+---------------------------+
|        ARPHRD_ type       |
|         (2 Octets)        |
+---------------------------+
|         Packet type       |
|         (1 Octet)         |
+---------------------------+
| Link-layer address length |
|         (1 Octets)        |
+---------------------------+
|    Link-layer address     |
|         (8 Octets)        |
+---------------------------+
|           Payload         |
.                           .

версия v1нодля:

Язык кода:bash
копировать
+---------------------------+
|         Packet type       |
|         (2 Octets)        |
+---------------------------+
|        ARPHRD_ type       |
|         (2 Octets)        |
+---------------------------+
| Link-layer address length |
|         (2 Octets)        |
+---------------------------+
|    Link-layer address     |
|         (8 Octets)        |
+---------------------------+
|        Protocol type      |
|         (2 Octets)        |
+---------------------------+
|           Payload         |
.                           .

Таким образом, общее количество байтов до заголовка TCP составляет: 20 (заголовок канального уровня) + 20 (заголовок IPv4) + 20 (заголовок TCP) = 60 байт;

Если вы не используете параметр -i Any для указания всех интерфейсов при перехвате пакетов, то вполне можно указать 54 байта для перехвата заголовка. -s 60 просто из соображений безопасности;

4. Установите формат объединенного сохранения или выполните преобразование формата (-F).

По умолчанию формат вывода — pcapng. Почему данные, сохраненные с суффиксом pcap, можно открыть нормально?

mergecapАвтоматически определяет формат файла,и правильно анализировать и отображать пакеты,Даже если файл pcapng сохранен с суффиксом pcap,Инструменты по-прежнему распознают и открывают его правильно.,А pcapng — это обновленная версия pcap.,pcapng имеет улучшенное отображение деталей и улучшенную производительность.,Поэтому в первую очередь рекомендуется использовать формат pcapng.

1) Список форматов

При необходимости сохраните в других форматах.,-FНичего не отвечайпараметр Может перечислить поддерживаемые форматы сохранения:

Язык кода:bash
копировать
mergecap -F

Уведомление,За исключением pcap и pcapng, нет необходимости указывать опцию -F отдельно.,Все остальные форматы необходимо указать.,Если вы измените только суффикс формата без указания соответствующего формата через -F,Фактически, он по-прежнему сохраняется в формате pcapng.,В результате соответствующий формат не может быть правильно прочитан.,Следовательно, вы также можете понять, что эта опция может конвертировать файлы перехвата пакетов определенного формата в другие форматы.

Готового окружения нет. Беря за пример формат pcapng, всё равно ставим длину усечения 60:

Язык кода:bash
копировать
mergecap -F pcapng -s 60 -w sum.pcapng http-*.pcap

2) Преобразование формата

Он также поддерживает преобразование формата, например преобразование pcapng в pcap:

Язык кода:bash
копировать
mergecap -F pcap -w sum.pcap sum.pcapng

То же самое касается конвертации в другие форматы.

4. Резюме

До сих пор мы полностью обсудили mergecap Варианты использования, в которых подробно описывается, как объединить несколько файлов пакетов и конвертировать их в разные форматы, а также подробно анализируется, как обрезать и сохранять захваченные файлы пакетов, чтобы уменьшить размер пакета и уменьшить рабочую нагрузку, а также вкрапления Linux. cooked Понятие захвата.

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose