Tsharkメモ

WiresharkCUI版Tshark(Terminal-based Wireshark)のメモ。
GUI版では、マシンへの負荷が高くなってしまうため長時間のキャプチャには不向きです。CUI版を使用すればマシンへの負荷を最小限にできるため長時間のキャプチャを行う場合に向いています。
また、あらかじめ保存するファイル名を指定しておけばキャプチャデータを逐次書き込んでくれるため、何かの拍子にTsharkが終了した場合でも直前までのキャプチャデータは保存されています。

以下はバージョン「TShark 0.99.4 (SVN Rev 19757)」で実行。

インストール

Wireshakをインストールする時の「Chooce Components」で「Tshark」を選択すればインストールできます。デフォルトでチェックが入っているため、通常はWiresharkと同時にインストールされています。

インストールされるフォルダはデフォルトでは「C:\Program Files\Wireshark」です。
「-v」でバージョン、「-h」でヘルプを表示します。

C:\Program Files\Wireshark>tshark.exe -v
TShark 0.99.4 (SVN Rev 19757)

Copyright 1998-2006 Gerald Combs and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled with GLib 2.6.6, with WinPcap (version unknown), with libz 1.2.3, with
libpcre 6.4, with Net-SNMP 5.3.1, with ADNS, with Lua 5.1, with GnuTLS 1.5.1,
with Gcrypt 1.2.3, with MIT Kerberos.

Running on Windows XP Service Pack 2, build 2600, with WinPcap version 4.0
(packet.dll version 4.0.0.755), based on libpcap version 0.9.5.

Built using Microsoft Visual C++ 6.0 build 8804

設定ファイル

設定ファイルはグローバル設定ファイルとユーザ設定ファイルがあります。
Windows
グローバル:C:\Program Files\Wireshark\preferences
ユーザ:%USERPROFILE%\Application Data\Wireshark\preferences

UNIX系】
グローバル:/usr/local/share/wireshark/preferences
ユーザ:$HOME/.wireshark/preferences

インターフェースの確認

オプション「-D」で使用できるインターフェースが確認できます。

>tshark.exe -D
1. \Device\NPF_GenericDialupAdapter (Adapter for generic dialup and VPN capture)
2. \Device\NPF_{BD1B4837-1DA2-4B01-91CC-A14D5E7C3363} (VMware Virtual Ethernet Adapter)
3. \Device\NPF_{29D2BE26-57BB-4F59-B4F6-2F277C845806} (Intel(R) PRO/1000 PL Network Connection (Microsoft's Packet Scheduler) )
4. \Device\NPF_{BD47943B-2AAF-4AE9-A1AE-5DBDE6156722} (11a/b/g Wireless LAN Mini PCI Express Adapter (Microsoft's Packet Scheduler) )
5. \Device\NPF_{67913AB7-B092-4F4F-A873-D676A43B5C7F} (VMware Virtual Ethernet Adapter)

キャプチャする

オプション「-i」で使用するインターフェースを選択します。
インターフェース番号を指定する方法とインターフェース名を指定する方法があります。
【インターフェース番号を指定する方法】

>tshark.exe -i 3
Capturing on Intel(R) PRO/1000 PL Network Connection (Microsoft's Packet Scheduler)
0.000000 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
0.001606 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
1.001177 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
1.004116 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
2.002125 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
2.003074 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
3.002105 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
3.003477 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
8 packets captured

【インターフェース名を指定する方法】

>tshark.exe -i \Device\NPF_{29D2BE26-57BB-4F59-B4F6-2F277C845806}
Capturing on Intel(R) PRO/1000 PL Network Connection (Microsoft's Packet Scheduler)

よく使うオプション

-w:結果をファイルに書き出す

キャプチャ結果をファイルに書き出す場合は「-w」を使用します。
【キャプチャ結果をc:\capture.capに書き出す】

>tshark.exe -i 3 -w c:\capture.cap

-r:ファイルを読み込む

保存されているキャプチャファイルを読み込みます。

-f:キャプチャフィルタ

パケット取得時にフィルタをかけてフィルタリングルールにマッチするパケットだけ保存します。

-R:ディスプレイフィルタ

キャプチャした全パケットの中でフィルタリングルールにマッチするパケットだけ表示します。

-V:詳細なパケットの中身を表示する

WiresharkでPacket Detailsにあたる部分を表示します。

>tshark.exe -i 3 -V
Capturing on Intel(R) PRO/1000 PL Network Connection (Microsoft's Packet Scheduler)
Frame 1 (74 bytes on wire, 74 bytes captured)
Arrival Time: Aug 1, 2007 17:25:46.532502000
[Time delta from previous packet: 0.000000000 seconds]
[Time since reference or first frame: 0.000000000 seconds]
Frame Number: 1
Packet Length: 74 bytes
Capture Length: 74 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:icmp:data]
Ethernet II, Src: Wistron_2c:cd:bf (00:16:d3:2c:cd:bf), Dst: Netscree_51:37:50 (00:10:db:51:37:50)
Destination: Netscree_51:37:50 (00:10:db:51:37:50)
Address: Netscree_51:37:50 (00:10:db:51:37:50)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: Wistron_2c:cd:bf (00:16:d3:2c:cd:bf)
Address: Wistron_2c:cd:bf (00:16:d3:2c:cd:bf)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol, Src: 10.100.0.108 (10.100.0.108), Dst: 10.100.0.1 (10.100.0.1)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 60
Identification: 0x90fc (37116)
Flags: 0x00
0... = Reserved bit: Not set
.0.. = Don't fragment: Not set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 128
Protocol: ICMP (0x01)
Header checksum: 0x9490 [correct]
[Good: True]
[Bad : False]
Source: 10.100.0.108 (10.100.0.108)
Destination: 10.100.0.1 (10.100.0.1)
Internet Control Message Protocol
Type: 8 (Echo (ping) request)
Code: 0
Checksum: 0xd558 [correct]
Identifier: 0x0500
Sequence number: 0x7303
Data (32 bytes)

0000 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 abcdefghijklmnop
0010 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69 qrstuvwabcdefghi

-x:16進数表示のデータとASCII表示のデータを表示する

WiresharkのPacket Bytesにあたる部分を表示します。

>tshark.exe -i 3 -x
Capturing on Intel(R) PRO/1000 PL Network Connection (Microsoft's Packet Scheduler)
0.000000 10.100.0.108 10.100.0.1 ICMP Echo (ping) request

0000 00 10 db 51 37 50 00 16 d3 2c cd bf 08 00 45 00 ...Q7P...,....E.
0010 00 3c 92 2d 00 00 80 01 93 5f 0a 64 00 6c 0a 64 .<.-....._.d.l.d
0020 00 01 08 00 f3 57 05 00 55 04 61 62 63 64 65 66 .....W..U.abcdef
0030 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 ghijklmnopqrstuv
0040 77 61 62 63 64 65 66 67 68 69 wabcdefghi

-a:キャプチャを自動的に停止する

ある条件に達した場合に自動的にキャプチャを停止します。ファイルサイズが大きくなりすぎると困る場合などに使用します。
【10秒後に停止する】

>tshark.exe -i 3 -a duration:10

【ファイルサイズが5KBに達したら停止する】

>tshark.exe -i 3 -a filesize:5 -w c:\capture.cap

-b:バッファサイズを分割する

ある条件に達した場合にキャプチャファイルを分割します。ファイルサイズが大きくなると保存や読み込みの際にフリーズする恐れがあるため分割して保存したいときに使用します。
【ファイルサイズが5KBに達したら次のファイルに保存する】

>tshark.exe -i 3 -b filesize:5 -w c:\capture.cap

2007/08/01 14:47 5,453 capture_00001_20070801144707.cap
2007/08/01 14:47 5,198 capture_00002_20070801144720.cap
2007/08/01 14:48 5,176 capture_00003_20070801144741.cap
2007/08/01 14:48 5,164 capture_00004_20070801144810.cap
2007/08/01 14:48 4,069 capture_00005_20070801144834.cap

【ファイルサイズが10KB、または5秒後に達したら次のファイルに保存する】

>tshark.exe -i 3 -b filesize:10 -b duration:5 -w c:\capture.cap

2007/08/01 15:05 1,000 capture_00001_20070801150458.cap
2007/08/01 15:05 564 capture_00002_20070801150504.cap
2007/08/01 15:05 211 capture_00003_20070801150510.cap
2007/08/01 15:05 10,276 capture_00004_20070801150540.cap
2007/08/01 15:05 10,275 capture_00005_20070801150544.cap
2007/08/01 15:05 11,374 capture_00006_20070801150544.cap

-c:取得するパケット数を指定する

【10パケット取得した時点でキャプチャを停止する】

>tshark.exe -i 3 -c 10
Capturing on Intel(R) PRO/1000 PL Network Connection (Microsoft's Packet Scheduler)
0.000000 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
0.001118 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
1.000983 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
1.003055 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
2.001947 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
2.003176 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
3.002907 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
3.005139 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
4.003865 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
4.004916 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
10 packets captured

-n:逆引きを無効にする

名前解決すると逆に見難くなったりするので、逆引きを無効にしたいときに指定します。

-N:指定したものだけを名前解決する

m:MACアドレスの名前解決を行う
n:ネットワークアドレスの名前解決を行う
t:ポート番号の名前解決を行う
C:DNSの名前解決を行う
MACアドレスの名前解決を行う】

>tshark.exe -i 3 -N m

-F:出力ファイル形式を指定する

デフォルトではパケットの生データで保存されるため、出力したいファイル形式を変更したい場合に指定します。「-w」と併用する。
【出力可能なファイル形式】

>tshark.exe -F
tshark.exe: option requires an argument -- F
editcap: The available capture file types for "F":
libpcap - Wireshark/tcpdump/... - libpcap
nseclibpcap - Wireshark - nanosecond libpcap
modlibpcap - Modified tcpdump - libpcap
nokialibpcap - Nokia tcpdump - libpcap
rh6_1libpcap - RedHat 6.1 tcpdump - libpcap
suse6_3libpcap - SuSE 6.3 tcpdump - libpcap
5views - Accellent 5Views capture
dct2000 - Catapult DCT2000 trace (.out format)
nettl - HP-UX nettl trace
netmon1 - Microsoft NetMon 1.x
netmon2 - Microsoft NetMon 2.x
ngsniffer - NA Sniffer (DOS)
ngwsniffer_1_1 - NA Sniffer (Windows) 1.1
ngwsniffer_2_0 - NA Sniffer (Windows) 2.00x
niobserverv9 - Network Instruments Observer (V9)
lanalyzer - Novell LANalyzer
snoop - Sun snoop
rf5 - Tektronix K12xx 32-bit .rf5 format
visual - Visual Networks traffic capture

-p:プロミスキャスモードでキャプチャしない

自分に対してのパケットや、ブロードキャスト、マルチキャストパケット以外はキャプチャしない。

-q:画面への表示をしない
-S:書き込み中も表示させる

「-w」で書き込み中も画面への表示を行います。

-t:タイムスタンプのフォーマットを指定する

出力するタイムスタンプのフォーマットを指定します。
ad:日付と時刻が表示される
a:時刻のみが表示される
r:最初のパケットをキャプチャしてからの相対時間が表示される(デフォルト)
d:1つ前のパケットとの差分が表示される。フィルタリングと組み合わせることで、サーバの応答時間を調べるのに使用できる。
【日付と時刻を表示する】

>tshark.exe -i 3 -t ad
Capturing on Intel(R) PRO/1000 PL Network Connection (Microsoft's Packet Scheduler)
2007-08-01 17:50:21.422082 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
2007-08-01 17:50:21.424160 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
2007-08-01 17:50:22.422059 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
2007-08-01 17:50:22.424452 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply
2007-08-01 17:50:23.423022 10.100.0.108 10.100.0.1 ICMP Echo (ping) request
2007-08-01 17:50:23.423686 10.100.0.1 10.100.0.108 ICMP Echo (ping) reply