【保存版】Wiresharkの表示フィルタ ~基本操作編~(Ver.3/4 機能比較付き)
本記事は、表示フィルタの指定方法とフィルタパラメータの書式について解説します。Wiresharkには「表示フィルタ」と「キャプチャフィルタ」があります。キャプチャフィルタについては、【保存版】Wiresharkのキャプチャフィルタ ~設定方法と注意点~をご覧ください。
記述にあるVer.3.xはVer.3.6.9、Ver.4.xは4.0.1でそれぞれ検証しています。
Wiresharkのバージョンは、[Hepl] menu > "About Wireshark"で確認できます。
表示フィルタの設定方法
表示フィルタは画面上部のフィルタボックスにパラメータを指定して設定します。設定方法は、以下の3つの方法があります。
- 直接パラメータを入力
- 右クリックで関連したパラメータを指定
- Packet Detail画面でヘッダ情報からドラッグアンドドロップでパラメータを指定
1.の方法はよく知られている一般的な方法です。検索をすればよく使うフィルタパラメータがたくさんヒットしますので、それらをコピーして設定することが可能です。
2.の方法も覚えておくと便利です。画面上で右クリックし"Apply as Filter"と出てきたら関連するフィルタが適用できます。
Packet List画面やPacket Detail画面だけでなく、[Statistics] menuから表示できるProtocol Hierarchy、Conversations、Endpointsなどでも右クリックからフィルタが設定できます。
この設定方法は、特にL2やL3の双方向の通信を素早く設定する際にはとても有効です。
かなり古いバージョンからこの右クリックのフィルタは可能でしたが、翻訳画面以外でも適用できることを知らない方が意外と多いです。ぜひいろいろな画面で試してみてください。(笑)
おすすめは、3.の方法です。パケットのヘッダ情報を確認しながら実施できるので非常に簡単です。
例えば、TCPヘッダのSYNフラグのビットが"1"のパケットだけフィルタする場合は、以下のように関連するフィールドを上部のフィルタボックスにドラッグアンドドロップします。
フィルタパラメータの書式
パラメータは、「フィールド名のみ」を指定するか、「フィールド名に対する値と関係性」を指定します。(と書くと少し難しそうですが、実際はとても簡単です。)
フィールド名は、上記の2.か3.の方法で指定すれば、覚える必要はありません。1.の方法でもテキストを入力すれば、予測変換機能が働きます。
基本的には、"protocol.feature.subfeature"形式のスキームに則っていますので、使っていれば自然と覚えます。
関係性は演算子で指定することがほとんどですので、こちらも慣れは必要ですが覚える必要はありません。
プロトコルからフィールド名を調べる場合は、フィルタボックスを右クリックして、"Display Filter Expression"を開きます。また、関係性と値もこのダイアログから入力ができますので、この画面でフィルタ設定を行うことも可能です。
No. | 項目 | 説明 |
---|---|---|
(1) | Field Name | フィールド名を選択します。この項目は必須です。 |
(2) | Relation | フィールド名と値の比較演算子および関係性を指定します。 指定できる項目は、比較演算子と関係性で説明します。 "==="と"!=="は、Ver.4.xのみ対応 |
(3) | Quantifier | フィルタに合致する条件を指定します。 "Any"は、条件フィールドが複数あった場合、ひとつでも条件に合致した場合にフィルタします。 "All"は、条件フィールドが複数あった場合、すべてのフィールドで条件に合致した場合にフィルタします。 この項目は、Ver.4.xのみ対応 |
(4) | Value | フィルタするフィールド名の値を指定します。 |
(5) | Search | 入力したキーワードを含むフィールド名を"Field Name"に表示します。 正規表現でも指定が可能です。たとえば、"ipv4"から始まるフィールド名は"^ipv4"で検索できます。 |
(6) | フィルタパラメータ | このダイアログで設定したフィルタパラメータです。 [OK]ボタンを押すと、Wiresharkの画面でフィルタパラメータがフィルタボックスに自動入力され、表示フィルタが適用されます。 |
比較演算子と関係性
比較演算子と関係性は、以下のとおりです。比較演算子は()内の記述でも指定可能です。
Relation | 説明 | フィルタパラメータの例 | 例の説明 |
---|---|---|---|
is present | プロトコルのみを指定する場合に選択 | http | HTTPのみ |
== (eq) | 等しい | ip.addr == 192.168.1.1 | IPアドレスが192.168.1.1のみ |
!= (ne) | 等しくない | udp.port != 123 | UDPポート123番以外 |
=== (all_eq) | (複数存在する場合はすべてが)等しい Ver.4.xのみ対応 |
ip.src === 10.0.0.1 | 送信元IPアドレスがすべて10.0.0.1 |
!== (any_ne) | (複数存在する場合は任意で)等しくない Ver.4.xのみ対応 |
ip.src !== 10.0.0.1 | 送信元IPアドレスが一部またはすべてが10.0.0.1 |
> (gt) | より大きい | udp.port > 1023 | UDPポートが1023より大きい |
< (lt) | より小さい | tcp.port < 1023 | TCPポートが1023より小さい |
>= (ge) | 以上 | udp.port >= 1024 | UDPポートが1024以上 |
<= (lt) | 以下 | tcp.port <= 1024 | TCPポートが1024以下 |
contains | 含まれる | http contains "text" | HTTPプロトコルに"text"の文字列が含まれる |
matches | 正規表現で指定 | http matches "(?i)(^text|^json)" | HTTPプロトコルに"text"か"json"の文字列が含まれ、かつ文字列の大文字、小文字は区別しない |
in | 複数の引数を指定 Ver.3.xとVer.4.xで指定方法が異なる |
ip.proto in {6 17} (Ver.3.xは半角スペースで区切る) ip.proto in {6,17} (Ver.4.xはカンマで区切る) |
IPプロトコル番号が6か17 |
あとがき
初期バージョンからWiresharkを使用されている方はご存知かと思いますが、Wiresharkの表示フィルタは、ドラッグアンドドロップでパラメータの指定ができるようなったことにより、使い勝手が一気に向上しました。(私の記憶では、WiresharkバージョンのVer.2.xの後半くらいでこの機能がリリースされたはずです。)
Ver.4.0ではその表示フィルタがより厳密に設定できるようになっていますので、いっそう便利になりました。
Wiresharkの表示フィルタは、3回にわけて解説しています。よろしければ他の記事もご覧ください。
【保存版】Wiresharkの表示フィルタ ~複数条件設定編~
【保存版】Wiresharkの表示フィルタ ~論理否定編~
また、表示フィルタとキャプチャフィルタは表記法が異なります。キャプチャフィルタについての記事も掲載しています。
【保存版】Wiresharkのキャプチャフィルタ ~設定方法と注意点~