Packet captureというと多くの場合Wiresharkを使用してのものが多いかと思いますが、本稿ではWindows端末の場合の他の選択肢を紹介します。
- netsh trace start
- (事象再現)
- netsh stop
取得例
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
C:\Windows\system32>netsh trace start capture=yes tracefile=c:\hiyoko\pcap_admin.etl
トレース構成:
-------------------------------------------------------------------
ステータス: 実行中
トレース ファイル: C:\hiyoko\pcap_admin.etl
追加: オフ
循環: オン
最大サイズ: 250 MB
レポート: オフ
C:\Windows\system32>netsh trace stop
トレースを関連付けています... 完了
トレースの結合中... 完了
データ収集を生成しています ... 完了
トレース ファイルと追加のトラブルシューティング情報は、"c:\hiyoko\pcap_admin.cab" としてコンパイルされました。
ファイルの場所 = c:\hiyoko\pcap_admin.etl
トレース セッションは正常に停止しました。
C:\Windows\system32>
- New-NetEventSession
- Add-NetEventPacketCaptureProvider
- Start-NetEventSession
- (事象再現)
- Stop-NetEventSession
- Remove-NetEventSession
取得例
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
PS C:\>
PS C:\> New-NetEventSession -Name trace -LocalFilePath "c:\hiyoko\netcap.etl" -MaxFileSize 1024
Name : trace
CaptureMode : SaveToFile
LocalFilePath : c:\hiyoko\netcap.etl
MaxFileSize : 1024 MB
TraceBufferSize : 0 KB
MaxNumberOfBuffers : 0
SessionStatus : NotRunning
PS C:\> Add-NetEventPacketCaptureProvider -SessionName trace -TruncationLength 1500
Name : Microsoft-Windows-NDIS-PacketCapture
SessionName : trace
Level : 4
MatchAnyKeyword : 0xFFFFFFFFFFFFFFFF
MatchAllKeyword : 0x0
CaptureType : BothPhysicalAndSwitch
VmCaptureDirection : IngressAndEgress
MultiLayer : False
LinkLayerAddress : {}
EtherType : {}
IpAddresses : {}
IpProtocols : {}
TruncationLength : 1500
PS C:\> Start-NetEventSession trace
PS C:\> Stop-NetEventSession trace
PS C:\> Remove-NetEventSession trace
PS C:\>
双方とも拡張子がetlなファイルが生成されます(コマンドプロンプトではcabファイルも)。
etlファイルはWiresharkでは開けませんがMicrosoft社のNetwork Monitorで中の確認、Wiresharkで開くためのcapファイルへの変換が可能です。
Network monitorは
https://www.microsoft.com/download/details.aspx?id=4865
からdownloadし、exeを実行するのみでinstall可能です。install後下の絵のように、

File -> Open -> Capture
でetlファイルを開き、下の絵のように

File -> Save as
でcapファイルにSaveするとそのファイルをWiresharkで見ることが可能になります。
以前はMMA(Microsoft Message Analyzer)がNetwork Monitorの代替ツールのように使えていましたが、現在使用可能なのはMicrosoft社のものではNetwork Monitorのみのようです。
CLIからのpacket capture操作、Network Monitor共に詳細な使用方法はMicrosoft社のサイトを確認するのがよいと思われます。本投稿では、
Collect data using Network Monitor
Advanced Troubleshooting Server Message Block (SMB)
が参考になりました。
WiresharkではNetwork interfaceを指定してcapture開始となりますが、今回の方法では特にinterface指定は不要です。また、WiresharkではInterfaceのUp/down(特定のSSIDへの接続等も含む)を伴う場合captureの取得が難しい場合があったり、802.1xのWireless packetではEAP Success以前のframeを取得できない等の制限がありますが、この方法では問題無く取得できます。TAC Service Request(SR)での対応では「netsh traceで取得したものをcapに変換した」のようなコメントをいただくと話が早いかと思われます。
ただし、双方とも実行には端末の管理者権限が必要になります。一般ユーザーでは
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
C:\>
C:\>netsh trace start capture=yes tracefile=c:\hiyoko\pcap_nonadmin.etl
要求された操作には、権限の昇格が必要です。管理者として実行してください。
C:\>
のように弾かれますのでご注意ください。本番環境の端末ではこの点が最もネックになることが考えられますが、packet captureの選択肢の一つとして考えていただければと思います。