無線LANのAPをGoogle Mapにマッピングする
大学構内で電波が弱いところが多々あってどのあたりが弱いのかなんとなく把握したかったので, KismetとAndroidを使ってAPをGoogle Mapにマッピングしてみた.
別にAndroidじゃなくてもGPSレシーバーがあれば可能.
うまくいけばこんな風にマッピングでき, BSSIDはもちろん, 暗号化方式やチャンネル, 接続しているクライアントのMACアドレスと(大雑把な)製品情報もわかる.
Androidでの設定
以下の2つだけ.
- USBデバッグモードを有効にしておく.
- BlueNMEAをインストールしておく
BlueNMEAを使うことでAndroid端末をGPSレシーバーとしてUSB接続などで利用できる.
BlueNMEAは4352/tcpでListenするため, 後述するadbコマンドでポートフォワーディングしてあげる.
PCでの設定
Kali Linuxだとkismetやgiskismetが既に入っているので楽かも.
ここではArch Linuxを使った.
まず, adbコマンドを使用するためにAndroid SDKなどをインストールする.
このあたりは
Android - ArchWiki
が詳しい.
$ yaourt -S android-sdk $ yaourt -S android-sdk-platform-tools $ yaourt -S android-sdk-build-tools $ yaourt -S android-tools $ yaourt -S android-udev
USBデバッグモードを有効にしたままAndroid端末を接続する.
$ adb devices List of devices attached HT07VHL00676 device
のように表示されたら問題はないはず.
続いて, kismetを導入する.
yaourt -S kismet
/etc/kismet.confを編集する. ncsourceのアダプタ名は環境に合わせて変更.
# mkdir /var/log/kismet ... logprefix=/var/log/kismet ncsource=wlp3s0:split=true,retry=true ...
kismetで収集した情報をkmlなどにエクスポートするためにgiskismetをインストールする必要があるが, レポジトリが見つからなかった.
Kali Linuxのレポジトリにはあったのでこれを使用.
$ git clone git://git.kali.org/packages/giskismet.git $ cd giskismet $ yaourt -S perl-xml-libxml perl-dbi perl-dbd-sqlite $ perl Makefile.PL $ make $ sudo make install
最後にgpsdをインストール.
$ yaourt -S gpsd
スキャンする
Android端末を接続し, adbコマンドでポートフォワーディングの設定をする.
$ adb forward tcp:4352 tcp:4352
続いて, 転送ポートである4352/tcpでgpsd起動する.
$ gpsd -N -n -D5 tcp://localhost:4352
Android端末でBlueNMEAを起動し, PCでKismetを起動する.
# kismet --use-gpsd-gps localhost:4352
歩く
PCとAndroid端末を持って調査したい場所を歩き回る.
Android端末の方はスリープにしてもBlueNMEAは動いているが, PCの方がモニターを閉じるとスリープになるとUSBの接続が切れるかもしれない.
systemdな環境であれば/etc/systemd/logind.confを以下のように編集して反映させる.
HandleLidSwitch=ignore sudo systemctl restart systemd-logind
これでかばんの中にPCとAndroid端末を入れて持ち歩ける.
ログファイルは/var/log/kismet/以下にKismet-
Google Mapで可視化する
giskismetでログファイルからデータをDBに保存する.
./giskismet -x /var/log/kismet/Kismet-<date>.netxml
wireless.db1に保存されている. さらにDBからデータをkmlに変換する.
./giskismet -q "SELECT * FROM WIRELESS" -o output.kml
あとは生成されたkmlファイルをGoogle Mapのインポート機能で読み込ませればいい.
地図に情報をインポート - マイマップ ヘルプ
思った以上にWEPが多い...