第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のパケットのフレームフォーマットを見て!
無線パケットの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が転送するから、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の登録商標です。