Windows 10の標準搭載コマンド「pktmon」でパケットをキャプチャーする方法

Windows 10の標準搭載コマンド「pktmon」でパケットをキャプチャーする方法

Windows環境で、パケットキャプチャーを行いたい場合、WireSharkといったサードパーティーのLANアナライザーツールをインストールするのが一般的ですが、現在のWindows 10では、標準搭載コマンド「pktmon」を使うことで、サードパーティーのツール無しでもパケットキャプチャーを行うことができます。

そこでここでは、Windows 10で「pktmon」コマンドの基本的な使い方を紹介します。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit21H2

pktmonコマンドの使い方

pktmonコマンドの基本的な使い方は次のとおりです。

なお、ここからの作業は、管理者権限でコマンドプロンプトまたはPowerShellを起動して実施します。

1.収集するパケットを絞り込む

pktmonコマンドでパケットを収集する場合、まずはフィルターを設定して収集するパケットを絞り込みます。これは、収集するパケットを絞り込まないと、データ量が多くなりすぎて解析しづらいためです。

フィルターは、MACアドレス、IPアドレス、ポート番号、プロトコルをはじめとして、さまざまな情報で定義できます。

たとえば、ポート番号を指定したフィルターを作成するときは、次のようにコマンドを実行します。

C:\> pktmon filter add <任意のフィルター名> -p <ポート番号>

IPアドレスとプロトコル、ポート番号を指定したフィルターを作成するときは、次のようにコマンドを実行します。

C:\> pktmon filter add <任意のフィルター名> -i <IPアドレス> -t <プロトコル> -p <ポート番号>

設定されているフィルターを一覧表示するときは、次のようにコマンドを実行します。

C:\> pktmon filter list

設定されているフィルターをすべて削除するときは、次のようにコマンドを実行します。

C:\>pktmon filter remove

2.パケットの収集を開始する

フィルターを設定したら、以下のコマンドでパケットの収集を開始します。

C:\> pktmon start -c

Windows 10の標準搭載コマンド「pktmon」でパケットをキャプチャーする方法

特定のネットワークインターフェースを通るパケットのみを収集したいときは、まず以下のコマンドでインターフェースの一覧を表示します。

C:\> pktmon list

Windows 10の標準搭載コマンド「pktmon」でパケットをキャプチャーする方法

次に、インターフェースのIDを指定して、パケットの収集を開始します。

C:\> pktmon start -c --comp 41

破棄(ドロップ)されたパケットだけを収集したいときは、パケットのタイプを指定して収集を開始します。

C:\> pktmon start -c --type drop

監視中のパケットをリアルタイムで画面に表示したいときは、以下のようにコマンドを実行します。(なお、このコマンドを実行したときはログファイルは生成されず、停止するときはCtrl+Cキーを押します。)

C:\> pktmon start -c -m real-time

Windows 10の標準搭載コマンド「pktmon」でパケットをキャプチャーする方法

3.パケットの収集を終了する

パケットの収集を終了するときは、以下のコマンドを実行します。

C:\> pktmon stop

Windows 10の標準搭載コマンド「pktmon」でパケットをキャプチャーする方法

4.ログファイルの変換

pktmonで収集したパケットのログは、デフォルトでカレントディレクトに「PktMon.etl」というファイル名で出力されますが、バイナリ形式ファイルのため、内容を確認するには「Microsoft Network Monitor」といったツールで読み込む必要があります。

そのため、pktmonにはログファイルを変換するオプションが用意されています。

たとえば、テキストファイルに変換したいときは、以下のようにコマンドを実行します。

C:\> pktmon etl2txt PktMon.etl

WiresharkといったLANアナライザーツールで解析できるpcapng形式に変換したいときは、以下のようにコマンドを実行します。

C:\> pktmon etl2pcap PktMon.etl

pktmonコマンドの使い方を調べるには?

pktmonコマンドの使い方を調べるときは、コマンドのヘルプを参照したり、オンラインヘルプが役立つでしょう。

まず、pktmonとだけ入力してエンターキーを押せば、サブコマンドの一覧が表示され、サブコマンドのヘルプを表示するときは、サブコマンドに続けてhelpと入力します。

Windows 10の標準搭載コマンド「pktmon」でパケットをキャプチャーする方法

たとえば「pktmon start」のヘルプを確認したいときは、以下のようにコマンドを実行します。

C:\> pktmon start help

Windows 10の標準搭載コマンド「pktmon」でパケットをキャプチャーする方法

オンランヘルプは、以下の公式サイトが役立つでしょう。

Pktmon コマンドの書式設定 | Microsoft Docs

あとがき

意外と知られていませんが、現在のWindows 10では、ssh, tar, curlといったLinuxでよく使われるコマンドも標準搭載されていますよ。

Windows 10でtar/curlコマンドが使えるようになった。
ここでは、Windows 10バージョン1803から標準コマンドとして搭載された「tar」と「curl」について紹介します。

ご活用あれ。