ESP8266を使って周囲のアクセスポイントに接続しているデバイスを調査する

こんにちは。今年もAdvent Calendarの時期がやってきましたね。去年はパソコンに差し込むだけで楽しいことがおこるデバイスの作り方を紹介しました。今年もハンダゴテなしで動かせる楽しいデバイスの作り方を紹介します。
(KLab Advent Calendar 2017 の2日目の記事になります)

概要

ESP8266 をモニターモードで動かし周囲のAPの間をとぶパケットを見て、各APにビーコンを飛ばしているデバイスのMacアドレスを調べるデバイスを作ります。

用意するもの

ESP8266を動かせる環境ならなんでも大丈夫ですが、国内で一番手っ取り早くデバイスを調達するのであれば秋月電子さんが販売している開発ボードがオススメです。1280円です。

ESP-WROOM-02開発ボード
http://akizukidenshi.com/catalog/g/gK-12236/

開発ボードはESP8266を動作させるために必要な回路がすべてのっているので、これを買えば他に買うものはありません。

早速動かす

細かい理屈はわかっていなくても以下のサイトからデータをとってきて書き込むだけで動かせます。とりあえず動かしてみましょう。

まずはプログラムの書き込みのために ArduinoIDE を用意します。
Arduino IDE は 公式サイト もしくは Windows Store からダウンロードできます。

ESP8266への書き込みを行うには関連するライブラリをインストールする必要があります。

ESP8266をArduinoIDEで使うにはArduinoマイコンとしても使える小型WifiモジュールESP-WROOM-02を使ってみる(Arduino利用編) | Device Plus - デバプラが参考になります。

書き込みと動作確認

Arduino IDE の準備が整ったら、ESP8266 Mini Sniff - Hackster.io にあるCODEのArduino Sketchをダウンロードします。zipファイルを展開するとソースコードがでてくるので Arduino IDE で開いて書き込めば完了です。

出力結果

シリアルモニタのバンドを57600bpsに設定して接続してしばらくすると、以下のような値が出力されていきます。

ap.png

左から順にtype(DEVICEかBEACONか)、MACアドレス、SSID、MACアドレス、チャンネル、受信信号強度となっています。

MACアドレスの変更について

今回作成したデバイスを使う事で、自分の周囲にあるデバイスやアクセスポイントについてたくさんの情報を得る事ができるようになりました。デバイス毎に設定されている検出したMACアドレスを記録すれば、自分の近くに、誰がいるのか、いつ離れたのか簡単に把握することができるようになります。

  • macOS
  • Windows10
    • [Windows 10] ランダムハードウェアアドレスの設定方法 - VAIO サポート FAQ(https://solutions.vaio.com/2827) 毎日変更できる仕組みがあるようです。
  • iPhone
    • 2014年からMACアドレスを変更する仕組みが入っているらしいです。
  • Android
    • 2016年から変更できるようになっているそうです。

このように、追跡対策としてのMACアドレスの定期変更機能は最近のデバイスであればだいたい用意されているため、長期間に渡る追跡は難しくなっています(一方で スマートフォンのMACアドレスランダム化、ハックされる - ごった日記 にあるようにちょっとがんばれば追跡可能であるという話もあります)

さいごに

このデバイスを使ってみると、高木先生が2007年に書かれている記事高木浩光@自宅の日記 - 無線LANのMACアドレス制限の無意味さがあまり理解されていないの意味がよくわかりますね。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.