#author("2020-07-05T22:31:18+09:00","","")
#navi(../)
* Windowsのnetshコマンドでパケットキャプチャする方法 [#i7456d7d]
Windowsの標準コマンドである、netshコマンドとtraceオプションにより、パケットキャプチャが可能です。~
本資料は、netshコマンドを使ってパケットキャプチャする方法と採取したパケットを閲覧するにあたり[[Microsoft Message Analyzer>https://www.microsoft.com/en-us/download/details.aspx?id=44226]]を紹介します。~
[[Wireshark>https://forest.watch.impress.co.jp/library/software/wireshark/]]でも採取したパケットを閲覧することは可能ですが、フリーソフトがインストールできない場合などには[[Microsoft Message Analyzer>https://www.microsoft.com/en-us/download/details.aspx?id=44226]]が使えます。

&color(red){''注意''};~
&color(red){Microsoft Message Analyzerは''廃止''になっています。};~
-[[Microsoft Message Analyzer Blog>https://docs.microsoft.com/en-us/openspecs/blog/ms-winintbloglp/dd98b93c-0a75-4eb0-b92e-e760c502394f]]

#htmlinsertpcsp(win-top.html,win-sp.html)
#contents

* 使用したOS [#kbee6647]
- Windows 10 64bit

* 関連サイト [#a8114528]
ダウンロードリンク
-[[Microsoft Message Analyzer>https://www.microsoft.com/en-us/download/details.aspx?id=44226]]~
旧名 Microsoft Network Monitor 
-[[Wireshark>https://forest.watch.impress.co.jp/library/software/wireshark/]]

* 関連記事 [#ud6131af]
-[[Microsoft Message Analyzerのインストール>ネットワーク関連/Microsoft Message Analyzerのインストール]]

* netsh trace start コマンド [#r8f64208]
netsh traceコマンドを実行するため、コマンドプロンプトを&color(red){''管理者として実行''};してください。~

以下のコマンドを実行すると、netsh trace startにつついてのオプションを確認することができます。~
 netsh trace start /?
 
 C:\WINDOWS\system32>netsh trace start /?
 
 start
  トレースを開始します。
 
  使用法: trace start [sessionname=<セッション名>]
        [[scenario=]<シナリオ 1,シナリオ 2>]
        [[globalKeywords=]keywords] [[globalLevel=]level]
        [[capture=]yes|no] [[capturetype=]physical|vmswitch|both]
        [[report=]yes|no|disabled] [[persistent=]yes|no]
        [[traceFile=]path\filename] [[maxSize=]filemaxsize]
        [[fileMode=]single|circular|append] [[overwrite=]yes|no]
        [[correlation=]yes|no|disabled] [capturefilters]
        [[provider=]providerIdOrName] [[keywords=]keywordMaskOrSet]
        [[level=]level] [bufferSize=<バッファー サイズ>]
        [[[provider=]provider2IdOrName] [[providerFilter=]yes|no]]
        [[keywords=]keyword2MaskOrSet] [[perfMerge=]yes|no]
        [[level=]level2] ...
 
 既定値:
        capture=no (トレース イベントに加え、パケット キャプチャを
                有効にするかどうかを指定します)
        capturetype=physical (パケット キャプチャを有効にする必要がある
                対象として、物理ネットワーク アダプターのみ、仮想スイッチのみ、
                または物理ネットワーク アダプターと仮想スイッチの両方を指定します)
        report=no (トレース ファイルと共に、補足レポートを
                生成するかどうかを指定します)
        persistent=no (再起動後に、netsh trace stop を発行するまで
                トレース セッションを続行するかどうかを指定します)
        maxSize=250 MB (最大トレース ファイル サイズを指定します。0 = 最大値なし)
        bufferSize=512 (トレース バッファー サイズを KB 単位で指定します。最小値 4、最大値 16384)
        fileMode=circular
        overwrite=yes (既存のトレース出力ファイルを上書きするかどうかを
                指定します)
        correlation=disabled (関連するイベントを相互に関連付け、グループ化
                するかどうかを指定します)
        perfMerge=yes (パフォーマンス メタデータをトレースに結合するか
                どうかを指定します)
        traceFile=%LOCALAPPDATA%\Temp\NetTraces\[sessionname]NetTrace.etl
                (出力ファイルの場所を指定します)
        providerFilter=no (プロバイダー フィルターを有効にするかどうかを指定します)
        sessionname='' (同時トレースを収集できるように、トレース セッションの名前を
                指定します)
 
 プロバイダー キーワードの既定値は all で、レベルは 255 になります (キーワードとレベルが指定されていない場合)。
 
 例:
 
 netsh trace start scenario=InternetClient capture=yes
 
        パケット キャプチャを物理ネットワーク アダプターに対してのみ有効にして
                InternetClient シナリオと依存プロバイダーのトレースを開始します。
        "netsh trace stop" コマンドが発行されるか、システムが再起動すると、
                トレースは停止します。
        出力ファイルには、既定の場所と名前が使用されます。古いファイルが
                存在する場合、それらは上書きされます。
 
 netsh trace start provider=microsoft-windows-wlan-autoconfig
        keywords=state,ut:authentication
 
        microsoft-windows-wlan-autoconfig プロバイダーのトレースを開始します。
        "netsh trace stop" コマンドが発行されるか、システムが再起動すると、
                トレースは停止します。
        出力ファイルには、既定の場所と名前が使用されます。古いファイルが
                存在する場合、それらは上書きされます。
        キーワード 'state' または 'ut:authentication' が含まれるイベントのみのログが記録されます。
 
        netsh trace show provider コマンドを使用すると、サポートされたキー
                ワードとレベルを表示できます。
 
キャプチャ フィルター:
        キャプチャ フィルターは、capture=yes を指定してキャプチャが明示的に
        有効になっているときにだけサポートされます。サポートされるキャプチャ
        フィルターとその使用法の一覧を表示するには、'netsh trace show CaptureFilterHelp' を使用します。
 
 プロバイダー フィルター:
        プロバイダー フィルターは、複数のプロバイダーでサポートされます。有効に
        するには、各プロバイダーの後に providerFilter=Yes を指定します。
        各プロバイダーでサポートされるプロバイダー フィルターとその使用法の
        一覧を表示するには、'netsh trace show ProviderFilterHelp' を使用します。

* パケットをキャプチャしてみる [#tf349ca3]
netsh trace startコマンドのパケットキャプチャについていくつかの例を以下に記します。~
コマンドプロンプトを&color(red){''管理者として実行''};してください。~

** パケットをキャプチャする [#k6d80c96]
以下の構文でパケットキャプチャが開始されます。~
 netsh trace start capture=yes
デフォルト値の250MBまでキャプチャされます。~
以下、実際にコマンドを実行したときの出力です。
 C:\>netsh trace start capture=yes
 
 トレース構成:
 -------------------------------------------------------------------
 ステータス:           実行中
 トレース ファイル:    C:\Users\sakura\AppData\Local\Temp\NetTraces\NetTrace.etl
 追加:                 オフ
 循環:                 オン
 最大サイズ:           250 MB
 レポート:             オフ

上記の出力がされ、プロンプトが入力待ちに戻ります。~
尚、パケットキャプチャはバックグランドで実行されています。~
トレースファイルを確認すると、ファイルが作成されているのが確認できます。
 C:\>dir c:\users\sakura\AppData\Local\Temp\NetTraces\*
 ドライブ C のボリューム ラベルは Windows です
 ボリューム シリアル番号は ****-**** です
 
  c:\users\sakura\AppData\Local\Temp\NetTraces のディレクトリ
 
 2019/03/18  08:51    <DIR>          .
 2019/03/18  08:51    <DIR>          ..
 2019/03/18  08:51    <DIR>          NetTrace
 2019/03/18  08:51           524,288 NetTrace.etl
                1 個のファイル             524,288 バイト
                3 個のディレクトリ  30,412,132,352 バイトの空き領域

** キャプチャの中止 [#w40e27dc]
上記のキャプチャを中止したい場合は、以下のコマンドを実行します。
 netsh trace stop
本コマンドを実行するとしばらくプロンプトが返ってきません。(&color(red){結構かかります。};)~
プロンプトが入力待ちになるまでお待ちください。~
以下、上記コマンドを実行したときの出力となります。
 C:\>netsh trace stop
 トレースの結合中... 完了
 データ収集を生成しています ... 完了
 トレース ファイルと追加のトラブルシューティング情報は、"C:\Users\sakura\AppData\Local\Temp\NetTraces\NetTrace.cab" としてコンパイルされました。
 ファイルの場所 = C:\Users\sakura\AppData\Local\Temp\NetTraces\NetTrace.etl
 トレース セッションは正常に停止しました。

** 出力先を指定する [#m269f2df]
上記では出力先を指定せず、実行したところ、環境変数TEMPのディレクトリに保存されました。~
出力先を指定するには、tracefile=を使用します。~
構文は以下のようになります。
 netsh trace start capture=yes tracefile=ファイル名
実際に実行したときの出力です。
 C:\>netsh trace start capture=yes tracefile=c:\sakura.etl

 トレース構成:
 -------------------------------------------------------------------
 ステータス:           実行中
 トレース ファイル:    C:\sakura.etl
 追加:                 オフ
 循環:                 オン
 最大サイズ:           250 MB
 レポート:             オフ
パケットキャプチャ中は以下のようにsakura.etl, sakuraフォルダが作成されました。
#ref(01.png)
#br
netsh trace stopをすると、フォルダは削除されcabファイルが作成されます。
#ref(02.png)
#br

** プロトコルを指定する [#re0ef7ff]
TCPやUDPパケットを指定しキャプチャしたい場合は Protocol=UDPやProtocol=TCPとなります。~
以下にコマンドを例を記します。
- TCPが対象
 netsh trace start capture=yes Protocol=TCP tracefile=c:\tcp.etl
- UDPが対象
 netsh trace start capture=yes Protocol=UDP tracefile=c:\udp.etl

** イーサネットタイプを指定する [#p5206a3a]
イーサネットタイプを指定する場合は、以下のようになります。
 netsh trace start capture=yes Ethernet.Type=IPv4 tracefile=c:\ipv4.etl

** トレースファイルの最大ファイルサイズを指定する [#e8d42b7f]
上記の出力の通り、デフォルトのトレースファイルサイズは250MBとなっています。~
maxSizeを指定することにより、サイズを変更することができます。~
以下、トレースファイルサイズを1024にして実行したときの出力です。
 C:\>netsh trace start capture=yes tracefile=c:\max.etl maxSize=1024
 
 トレース構成:
 -------------------------------------------------------------------
 ステータス:           実行中
 トレース ファイル:    C:\max.etl
 追加:                 オフ
 循環:                 オン
 最大サイズ:           1024 MB
 レポート:             オフ


* Microsoft Message Analyzerを使って閲覧する [#v6485bf8]
[[Microsoft Message Analyzer>https://www.microsoft.com/en-us/download/details.aspx?id=44226]]をインストールしておいてください。~
microsoft Message Analyzerのインストール記事も公開しています。
-[[Microsoft Message Analyzerのインストール>ネットワーク関連/Microsoft Message Analyzerのインストール]]

採取したパケットをキャプチャファイルをMicrosoft Message Analyzerで開いた状態のスクリーンキャプチャです。~
etlファイルを開くと採取したキャプチャを閲覧することができます。
#ref(b1.png)
#br

以上、Windows標準のnetshコマンドを使ってネットワークのパケットをキャプチャする方法でした。

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS