
Утилита, которая преобразует файл .etl, содержащий захват сетевых пакетов Windows, в формат .pcapng.
Этот инструмент позволяет просматривать захваты пакетов ndiscap и pktmon с помощью Wireshark. Из-за проблем с производительностью другого популярного метода захвата пакетов (WinPcap, который входил в более старые версии Wireshark) следует отдавать предпочтение этим встроенным инструментам.
В Windows есть несколько встроенных компонентов, способных захватывать пакеты:
pktmon start --capture
<воспроизведение>
pktmon stop
netsh trace start capture=yes report=disabled
<воспроизведение>
netsh trace stop
Файлы, создаваемые этими инструментами, являются файлами etl, которые можно открыть с помощью средств, ориентированных на ETW, таких как Microsoft Message Analyzer, но их нельзя открыть в Wireshark, который является предпочтительным инструментом для многих инженеров. Etl2pcapng.exe может преобразовать файл etl в файл pcapng для открытия в Wireshark или для анализа с помощью языков, имеющих библиотеки pcapng, таких как Python и Rust.
Примечание: pktmon имеет встроенную утилиту преобразования etl2pcap ("pktmon etl2pcap <имя_файла>"), которая также способна создавать базовые файлы pcapng. etl2pcapng предоставляет аналогичную возможность преобразования, дополняя встроенную утилиту следующим образом:
Предварительно собранные двоичные файлы доступны в разделе Релизы: https://github.com/microsoft/etl2pcapng/releases
Запустите инструмент с помощью:
etl2pcapng.exe in.etl out.pcapng
После преобразования файла инструмент выводит таблицу, показывающую соответствие между индексами интерфейсов Windows и идентификаторами интерфейсов pcapng.
Выходной файл pcapng будет содержать комментарий к каждому пакету, указывающий PID текущего процесса на момент регистрации пакета. ПРЕДУПРЕЖДЕНИЕ: часто это не совпадает с фактическим PID процесса, который вызвал отправку пакета или которому был доставлен пакет, поскольку поставщик захвата пакетов часто работает в DPC (который выполняется в произвольном процессе). Пользователь должен учитывать это при использовании информации о PID.
В командной строке в каталоге src выполните следующее. Требуется Cmake версии не ниже 3.15.
mkdir build
cd build
cmake ..
cmake --build . --config Release
Двоичный файл будет находиться в build/Release/etl2pcapng.exe
1.12.0 - Добавлена поддержка файлов etl, созданных pktmon, и запись событий других поставщиков как блоков экспорта журнала systemd.
1.11.0 - Добавлена возможность опускать имя выходного файла (например, "etl2pcapng.exe foo.etl". Имя выходного файла становится "foo.pcapng").
1.10.0 - Ускорение в 10 раз.
1.9.0 - Добавлена поддержка декодирования событий Microsoft-Windows-Ras-NdisWanPacketCapture (VPN/Удаленный доступ) + добавление ThreadID (TID) в комментарии к пакетам.
1.8.0 - Добавлено значение RSS Hash в комментарии к пакетам для пакетов VMSwitch.
1.7.0 - Включена информация о пакете VMSwitch в комментарии к пакетам.
1.6.0 - Включена защита ControlFlowGuard.
1.5.0 - Запись iftype и ifindex в блоки описания интерфейса и статическая линковка C runtime, чтобы не требовалась установка vcredist.
1.4.1 - Исправлена ошибка, приводящая к записи повреждённых пакетов.
1.4.0 - Автоматическое определение исходной длины фрагмента, если захваченные фрагменты были усечены.
1.3.0 - Добавлен комментарий к каждому пакету, содержащий идентификатор процесса (PID).
1.2.0 - Запись информации о направлении каждого пакета (epb_flags).
1.1.0 - Добавлена поддержка многособытийных пакетов, обнаруженных в трассах с Win8 и старше.
Этот проект приветствует вклад и предложения. Большинство вкладов требуют вашего согласия с Лицензионным соглашением для участников (CLA), подтверждающим, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Подробности см. на https://cla.opensource.microsoft.com.
Когда вы отправляете pull request, бот CLA автоматически определит, нужно ли вам предоставить CLA, и соответствующим образом оформит PR (например, проверка статуса, комментарий). Просто следуйте инструкциям, предоставленным ботом. Вам нужно будет сделать это только один раз во всех репозиториях, использующих наше CLA.
Этот проект принял Кодекс поведения Microsoft Open Source. Для получения дополнительной информации см. Часто задаваемые вопросы о Кодексе поведения или обратитесь по адресу [email protected] с любыми дополнительными вопросами или комментариями.