
Windowsのネットワークパケットキャプチャを含む.etlファイルを.pcapng形式に変換するユーティリティ。
このツールを使用すると、ndiscap および pktmon のパケットキャプチャを Wireshark で表示できます。他の一般的なパケットキャプチャ方式(以前のバージョンの Wireshark に含まれていた WinPcap)にはパフォーマンス上の問題があるため、これらのインボックスツールを優先して使用することをお勧めします。
Windows には、パケットキャプチャが可能なインボックスコンポーネントがいくつかあります。
pktmon start --capture
<再現手順>
pktmon stop
netsh trace start capture=yes report=disabled
<再現手順>
netsh trace stop
これらのツールが生成するファイルは etl ファイルであり、Microsoft Message Analyzer のような ETW 中心のツールで開くことはできますが、多くのエンジニアが好んで使用する Wireshark では開くことができません。Etl2pcapng.exe は etl ファイルを pcapng ファイルに変換して Wireshark で開けるようにしたり、Python や Rust など pcapng ライブラリが利用可能な言語で分析できるようにします。
注: pktmon には組み込みの etl2pcap 変換ユーティリティ("pktmon etl2pcap <ファイル名>")があり、基本的な pcapng ファイルを生成することもできます。etl2pcapng はこの組み込みユーティリティと同様の変換機能を提供し、さらに以下の機能を追加しています。
ビルド済みのバイナリは Releases セクションで入手できます: https://github.com/microsoft/etl2pcapng/releases
ツールは次のように実行します。
etl2pcapng.exe in.etl out.pcapng
ファイルを変換した後、ツールは Windows インターフェイスインデックスと pcapng インターフェイス ID のマッピングを示すテーブルを出力します。
出力される 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 - pktmon によって生成された etl ファイルのサポートを追加し、他のプロバイダーイベントを 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 - VMSwitch パケットのパケットコメントに RSS ハッシュ値を追加。
1.7.0 - VMSwitch パケット情報をパケットコメントに含める。
1.6.0 - ControlFlowGuard を有効化。
1.5.0 - インターフェイス説明ブロックに iftype と ifindex を書き込み、vcredist をインストールしなくて済むように C ランタイムを静的にリンク。
1.4.1 - 破損したパケットを書き込むバグを修正。
1.4.0 - キャプチャされたフラグメントが切り詰められた場合、元のフラグメント長を自動的に推測。
1.3.0 - 各パケットにプロセス ID (PID) を含むコメントを追加。
1.2.0 - 各パケットの方向情報 (epb_flags) を書き込み。
1.1.0 - Win8 以前のトレースで見られるマルチイベントパケットのサポートを追加。
このプロジェクトは貢献と提案を歓迎します。ほとんどの貢献には、あなたが貢献を使用する権利を持ち、実際にその権利を私たちに付与することを宣言する Contributor License Agreement (CLA) に同意する必要があります。詳細については、https://cla.opensource.microsoft.com をご覧ください。
プルリクエストを送信すると、CLA ボットが自動的に CLA の提供が必要かどうかを判断し、PR を適切に装飾します(ステータスチェック、コメントなど)。ボットの指示に従ってください。この作業は、当社の CLA を使用するすべてのリポジトリで一度だけ行う必要があります。
このプロジェクトは Microsoft Open Source Code of Conduct を採用しています。詳細については Code of Conduct FAQ を参照するか、追加の質問やコメントがある場合は [email protected] までお問い合わせください。