第3回 センパイ、マクロってなんですか??
その②

センパイ、マクロってなんですか??

さて。今日はマクロのさらにつっこんだ使い方を教えるわ。 

紗子(通常)
るこ(あは)

はい、お願いします!

無線LANのパケットをキャプチャするときに、特にうちの部署の居室には無線APが50台以上乱立しているから、特定のAPのパケットのみを抽出したいわよね。そういうときってどうフィルタかければいいかしら? 

さえこ
るこ(はてな)

あ、えーと、普通に「wlan.bssid ==“APのBSSID “」ですかー? 

それだと、"Ack"や"SSID=BroadcastのProbeRequest"が引っかからなくて後で解析するときに困るのよ。 

さえこ
るこ

AckやProbeRequestが引っかからない・・・? 

AckのフレームにはそもそもBSSIDが存在しないし、“SSID=BroadcastのProbeRequest”は、BSSIDが「ff:ff:ff:ff:ff:ff:」なので、フィルタルールから漏れるんデス。

えあぷぅ

例えば、アクティブスキャンのAP検索で接続したいSSIDが見つからないときは、機器が”SSID=BroadcastのProbeRequest”を正常に送信しているかどうかをまず確認するの。
送信していなければ機器の問題だし、Probe Requestに対して応答を返していなければAPが悪いか、機器が送信したRequestに不備がある。 そういう切り分けをしていくのね。

紗子
るこ

なるほど~。

ではこれらの"Ack"や"SSID=BroadcastのProbeRequest"を引っかけるために、フィルタルールに何を追加すればよいか。 

紗子(通常)

るこちゃん!無線LANのパケットのフレームフォーマットを見て! 

えあぷぅ
IEEE802.11フレームフォーマット

無線パケットの802.11ヘッダのAddress1~4には、接続形態によって下記のいずれかのアドレスが入るんデス!
・宛先端末アドレス(DA, Destination Address)
・送信元端末アドレス(SA, Source Address)
・受信者側APアドレス(RA, Receiver Address)
・送信者側APアドレス(TA, Transmitter Address)

えあぷぅ

たとえば同じ無線APに接続する機器Aから機器Bに対してパケットを送信する場合に、機器Aから無線APまでに運ばれるパケットと、無線APから機器Bまで運ばれるパケット内に格納されるAddressを見てクダサイ! 

えあぷぅ
同じ無線APに接続する機器Aから機器Bに対してパケットを送信する場合
るこ(はてな)

あ、無線APが転送するから、Receiver AddressやTransmitter Addressに無線APのMACが入るんだ~ 

つまり、無線APのパケットをすべて拾おうと思ったら・・・・? 

えあぷぅ
るこ

なるほど!無線APのMACアドレスが入る可能性のある、RAとTAもフィルタルールに追加すればいいのか! 

そうよ。ちゃんと無線LANの基本を予習してきてるようね。「wlan.ra」と「wlan.ta」、あとは「wlan.addr」も追加しとけば確実ね。

紗子(通常)
るこ

ってことは、こういう感じかな~?
wlan.bssid == APのMAC || wlan.addr ==APのMAC || wlan.ra ==APのMAC || wlan.ta ==APのMAC 

MACアドレスも一部だけにしたら簡単デスよ! 

えあぷぅ
るこ

ふむふむ、これをマクロに登録すればいいんですね!APのMACの一部を記入して~、「ap」って名前で保存しとくか!

マクロ登録の一例
るこ

そして、このフィルタを使うときは、「Filter:」に「${ap}」って入力すればいいのかな?? 

マクロ登録の一例
るこ

うんうん、ビンゴっぽい!じゃあこのマクロを使えば、互換性検証で無線APをとっかえひっかえした場合にも解析しやすくなるかな! あれ????

るこ

いやいや、毎回マクロの中身のMACを書き換えてたら、すごいめんどくさいし、全然お役立ちじゃない気がする・・・。
えーーと???

・・・。 

紗子(通常)

・・・。 

えあぷぅ

一人で突っ走ってるから静観してたけど。やっぱ行き詰まるわよね。 

紗子

ちゃんとお話聞いてからにしてクダサイ~; 

えあぷぅ
るこ

す、すいませ~~ん;

たとえばMACアドレスなど、毎回変化するものがルールに入っている場合にマクロは便利なの。単に「Filter:」欄に入力して「Save」で保存しておいて、毎回MACの一部を書き換えて実行することも可能だけど、何箇所も書き換えるのは煩わしいし、入力ミスしたらフィルタ漏れも発生するわよね。

でもマクロだと、下記のような書き方をすれば面倒なMACアドレスの書き直しが不要になるの。

紗子
マクロ登録の一例
るこ

「$1」? 何ですかこれは???? 

マクロ引数デスよ!「Filter:」欄にユーザが入力する「;」区切りの引数で、「$1」は第1引数デス!

えあぷぅ

たとえば MACアドレスの一部に ab:cd を含むものを表示する場合に、「Filter:」のところに「${ap:ab:cd}」と入力するの。
そうすると、上記のフィルタルールはこのように展開されて解釈されるのよ。 

紗子
マクロ登録の一例
るこ

おぉ!なんだかすごい!!!

ちなみに、たとえば無線APと機器の通信をフィルタする場合にはMACアドレスは2個になるけど、以下のようなマクロにすればいいわ! 

紗子
マクロ登録の一例

これを使って、APのMACアドレスの一部がb6:ee、機器のMACアドレスの一部が6f:fdの通信を抽出する場合には、「Filter:」のところに「${apdev:b6:ee;6f:fd}」と書けばいいの。 

紗子
マクロ登録の一例
るこ

うっわぁ~~~、とっても便利ー!! 

私がよく使うフィルタは下記よ。こうすれば無線APが多い場所でキャプチャした時に、不要なパケットだけ排除して、必要なパケットのみ抽出することができるわ。 

紗子
マクロ登録の一例
るこ

うっひゃ~;すごい複雑なマクロすぎて目が回りそう;; 

るこちゃん!それぞれの式には下記の意図があるんデスよ! 

えあぷぅ
マクロ登録の一例
るこ

さすがWiresharkの鬼ですね~・・・っていうかこんなすごい内容を第3回で発表しちゃっていいんですか?! 

そうね。もうネタ切れかもね。

紗子
るこ(ひえ)

えーーーーーーーーーーーー!!!!

冗談よ。つまんないこと気にしてないで、さっさと自分の仕事に戻ったら? 

紗子(笑顔)
るこ

そうだった!まだ無線ルータの互換性検証の途中だった!
あと100台も残ってるぅ~~~ 

るこちゃん!ファイトデスー! 

えあぷぅ

                    ※「Wireshark」は、Wireshark Foundation, Inc. の登録商標です。
                    ※「AirPcap」は、Riverbed Technologyの登録商標です。