2013年5月1日水曜日

MACで無線LANキャプチャー

パケットキャプチャソフトのWireShark導入しました。

MacBook Air 13-inch, Mid 2012
ソフトウェア  OS X 10.8.2(12C3103)

動作環境にX11が必須だけど、Mountain LionにはX11はインストールされていないようで、別途インストールが必要

X11(XQuartz)WireSharkをダウンロードしてインストール。

NICが表示されない場合は下記を参照にしました。

http://apple.stackexchange.com/questions/7913/how-can-i-use-wireshark-on-a-macbook-air

cd /Library/StartupItems
sudo chown -R root:wheel ChmodBPF

または

sudo open /Applications/Wireshark.app/




MacOS環境においては、Wireshark1.8.x以降の環境で比較的簡単に無線LANのパケットキャプチャできる。


(参考)
http://wiki.wireshark.org/CaptureSetup/WLAN
http://ch.nicovideo.jp/ikeriri/blomaga/ar199685







Monitor Modeに変更することで802.11のパケットを直接確認することが可能となる。
  1. キャプチャオプション画面を表示
  2. 無線LANをキャプチャしたい無線インタフェース(例en0)をダブルクリックして、「Edit Capture Interface」画面を表示
  3. 「capture packets in monitor mode」にチェック








無線LANインタフェースをモニターモードに変更するとこの際、今まで接続していた無線LANアクセスポイントとはdeassociateされてしまうため注意


キャプチャしたいチャンネルに変更するためには、下記のリンクを参考に変更する必要があります。

http://wiki.wireshark.org/CaptureSetup/WLAN#Mac_OS_X

MACの無線環境をコマンドライン(airport)から知る方法について記述されています。
まずはシンボリックリンクを作成します。

sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
現在のチャンネルの状況を表示

$airport -I
     agrCtlRSSI: -50
     agrExtRSSI: 0
    agrCtlNoise: -89
    agrExtNoise: 0
          state: running
        op mode: station
     lastTxRate: 65
        maxRate: 72
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa2-psk
          BSSID: 20:2:af:18:c7:f7
           SSID: SC06D
            MCS: 7
        channel: 6

 すべてのネットワークからdisassociate
$airport -z

チャンネルを7にセット
$airport -c7





参考情報

プロミスキャスモードの説明は下記

プロミスキャスモード 【 promiscuous mode 】

ネットワークカードの動作モードの一つで、ネットワークを流れるすべてのパケットを受信して読み込むモード。

ネットワークカードは通常、宛先が自分になっているパケットのみを受信するよう設定されており、ケーブルから別の宛先のパケットが届いても読み込まずに破棄するようになっている。プロミスキャスモードに設定したカードでは、宛先に関わらずすべての受信パケットを上位レイヤのソフトウェアに引き渡すため、そのセグメントを流れるすべてのデータを監視することが可能となる。

プロミスキャスモードはパケットアナライザなどが利用するモードで、本来はトラブルの原因調査といったネットワーク管理のためのモードだが、送信者や受信者に気付かれずにデータを傍受することができるため、悪用されると危険。




logcatをコンソールで色分けしたりフィルタする

コンソールでlogcatを見るときに色分けしたり開発中のアプリだけフィルタしたりする方法
色付けするpythonスクリプトがあるのでそちらを利用


Jeff Sharkey » Modifying the Android logcat stream for full-color debugging





aliasをきっておきます。

alias catlog='adb logcat |~/Documents/Android/script/coloredlogcat.py'


$ adb logcat | coloredlogcat.py 





フィルタ

pidや特定文字列でフィルタするためにawk使う





adb logcat |awk '/\(23009\)/'  | coloredlogcat.py


できればshellの引数でpidを切り替えたいが今のところはできていません。