このページは乱ことNobuoNakakoが運用する「Etherealを使おう」の一部です。お時間があれば表紙も訪れてやってください
リンク等についてはこちら。間違いを見つけた時や「ここはこうした方が良い」等の意見は遠慮なくこちらまで。
The Ethereal manual (WINDOWS&UNIX Var0.9.16)
|
フィルタ作成方法
|
調査 | ||||||||||||
|
Etherealを使っていく上で最も重要な行為がこのフィルタの定義になると思います。 「Etherealを使おう」では「フィルタの基本設定」や「その他のフィルタ設定」でフィルタの定義を解説していますが。ここではわざわざ定義を入力なくても簡単にフィルタを作成できる方法を解説していきたいと思います。
●Etherealには2つのフィルタ方式がある まず最初にEtherealには大きく2つのフィルタがあります。1つは「キャプチャフィルタ(Capture Filter)」といわれるものでパケットをキャプチャする際にフィルタをかけフィルタの条件に一致したものだけを取り込むというものです。2つ目は「ディスプレイフィルタ(Display Filter)」といわれるものでキャプチャした後のデータに対してフィルタを定義し一致したものだけを表示する事のできるものです。 実はこの「キャプチャフィルタ」と「ディスプレイフィルタ」は定義の方法が違います。「Etherealを使おう」では基本的に前者の「キャプチャフィルタ」を 基本的によく使用するは恐らく 従ってディスプレイフィルタの定義方法さえ知っていれば基本的には問題なくEtherealでフィルタを使いこなす事ができます。 ●ディスプレイフィルタ 「ディスプレイフィルタ」は先程も述べた様にキャプチャした後に使用するフィルタです。基本的にはEtherealのメイン画面左下にあるFilterウィンドウで定義を
実はこの他にもキャプチャ結果に色をつける時やパケットを検索するとき統計をとる時等、様々な所でフィルタ定義する際に使用します。 とりあえずフィルタを書いてみましょう。フィルタ定義文の詳細は「フィルタの基本設定」や「その他のフィルタ設定」で記載していますが今回はこれを見なくても問題はありません。 Pingのサンプルファイルがここにあります。これを基に解説をしていきたいと思います。
ファイルの開き方は「キャプチャ結果を開く」を参照して下さい。 まずこのキャプチャ結果から送信元が192.168.0.1のパケットのみを表示したい場合、下記の様に設定します。 ip.src == 192.168.0.1
ipはIPの事、srcは送信元(Source)を意味しておりその後に条件である192.168.0.1を==で結びます。
結果表示としては下記の様に2行目のキャプチャデータのみが表示されたと思います。
さて、上記の様に「送信元が192.168.0.1」という定義でディスプレイフィルタを作成するのは非常に簡単ですが「192.168.0.1が送信元のPingのReplyだけ」といった複雑な定義になるとそうはいせん。 この様な定義でも簡単に設定する方法を解説していきたいと思います。 最も簡単にフィルタ定義を作成できる方法は[Display]選択にある[Prepare]のになると思われます。
例えば先程の 1.まず最初に定義の元となる送信元(Source)が192.168.0.1のキャプチャを選択します。(2番あたりが最適です)
2.選択したら詳細フレームを見て下さい。下記の様に表示されているはずです。
この中で送信元(Src)の192.168.0.1が記載してある項目(フレーム)を探して下さい。 3.[Internet Protocol]の項目(IPフレーム)の
ここでも先程と同じ用に送信元(Source)の192.168.0.1が記載してある部分を探してそこを選択します。 4.選択された状態で[Display]→[Prepare]→[Selected]を選択します。
5.Etherealの画面左下のFilter欄に下記の様に定義が入力されているのを確認して下さい。
6.
この様に自動的にフィルタ定義が作成されますので非常に便利です。 サンプルのキャプチャは4つのPingのrequestパケットとそれに対する返答である4つEchoパケットの合計8行のPingパケットになります。 このPingパケットのICMPフレームにはシーケンス番号(Sequence number)というものがあります。Pingを発信したrequestパケットとそれに対する返答のEchoパケットのシーケンスNoは同じ番号です。この番号によりどのRequest信号に対するEchoパケットなのかという情報が分かる様になっています。 つまり1番のシーケンス番号と2番のシーケンス番号は同じ番号を使用しており、3番と4番もまた同じシーケンス番号で結ばれています。 シーケンス番号の指定をするフィルタ定義は下記の様にします。 frame[40:2] == 21:00 この定義の場合、1番と2番のパケットのみが表示されのこりは表示されません。 まずこのシーケンス番号と送信元のIP両方を指定する場合の下記Filter定義を作成する為の手順を解説したいと思います。 (ip.src == 192.168.0.1) && (frame[40:2] == 21:00) 1.まず「送信元が192.168.0.1」という定義を
2.次にこの定義に更にシーケンス番号を追加する為に選択して下さい。
3.[Display]→[Prepare]→[And Selected]を選択して下さい。
4.Etherealの画面左下のFilter欄に下記の様に定義が入力されているのを確認して下さい。
5.
この様に[And Selected]を選択するだけで組み合わせが可能となります。 [Display]の[Prepare]のメニューは以下の様になっています。 [Selected]について 選択した条件と同一の物に限り表示します。 [Not Selected]について 選択した条件以外の物に限り表示します。 [And Selected]について 基本的に既に[Filter]に条件が入っている状態に使用します。(入ってなくても一応動作しますが) 既に入力した条件と選択した条件が一致した場合に限り表示します。 [Or Seledted]について 基本的に既に[Filter]に条件が入っている状態に使用します。(入ってなくても一応動作しますが) 既に入力した条件若しくは選択した条件が一致した場合に限り表示します。 [And Not Selected]について 基本的に既に[Filter]に条件が入っている状態に使用します。(入ってなくても一応動作しますが) 既に入力した条件と選択した条件が一致しない場合はすべて表示します。 [Or Not Selected]について 基本的に既に[Filter]に条件が入っている状態に使用します。(入ってなくても一応動作しますが) 既に入力した条件若しくは選択した条件が一致しない物はすべて表示します。 折角定義しても保存しなければすぐに定義文は消えてしまいます。 ここでは定義文の保存方法を解説します。 とりあえず 1.まず定義文を作成します。
2.
上記の様なウィンドウが立ち上がると思います。一番下の[Filter string]欄に選択した定義が入っている事を確認して下さい。 3.[Filter name]に名前を入れます。(英数文字)
4.
上記の様に設定が追加された事を確認して下さい。 5. 以上がフィルタ定義の保存方法です。保存された設定はWindows2000の場合、[Documents and settings]→[Administrator]→[Application Data]→[Ethereal]の中にある[dfilters]というファイルに記載されます。
先程の これはフィルタの定義を選択により行う事ができるもので。これを使いこなすといちいちフィルタの定義文を覚えなくても定義が可能となります。まだキャプチャしていないパケットに対してフィルタを作成したり、よく知らないプロトコルに対してフィルタがどんなものがあるのか調べたい等といった時に使用するのが良いと思われます。 さて、その前にICMPについて少し解説します。 ICMPはPingに使用されるプロトコルです。通常のプロトコルと違い、下記の様にEthernetフレームとIPフレームのみが付随しており、TCPやUDPは通常のPingでは付属しません。
一番左の[タイプ]が非常に重要で、このタイプにパケットの目的(ICMPの種類)が分かります。ICMPのタイプはRFC792、950、1256、1393、1788等で定義されています。基本的な部分は792で定義されていますが重要な3つのみ下記表にいたしました。
これを踏まえた上で先程のICMPのサンプルを使用してICMPのechoパケット(タイプ8)のみを出すフィルタの作成方法を解説していきたいと思います。 1.[Display Filter]で 2.[Field name]で[ICMP]を探して下さい。
3.
4.[Relation]で[==]を選択して下さい。[Value(unsigned,1byte)]という項目が登場します。
5.[Value(unsigned,1byte)]に8(タイプecho)と入力してください。
6. 7.[Display Filter]の[Filter String]を見てください。[icmp.type == 8]と入っているはずです。[Filter name]で適当に名前をつけて[New]ボタンを押してフィルタ定義を追加してください。
8.
ICMPの(Echo)パケットのみが表示されたはずです。 |
|||||||||||||
Copyright 2003 by Nobuo Nakako All right reserved.