M5StackでWiFiプローブを作る
Wi-Fiを触り始めると、「ほんとにデータ飛んでるのかな?」とか気になりだしますよね。ってことで、それを解析できる環境をちょこっとつくってみましょう。
1.そういうアプリがある
昔は、AirPCapなどのハード(なんだかんだで10万ぐらいしたやつ)を使えば、すぐに測定できるわけですが、AirPCapも販売が終わっています。
で、いろいろ探してみたら、すでにそういうアプリを書いていた方がいるので、これをベースに環境を作ってみます。
2.使いやすくするために
公開されているプログラムをみてみると、ちょっと問題があります。
・Unix環境で動くようにできている
・WROOM32 で動く(開発基板だとすぐ実用には難しい)
・パケットデータは4バイトしかとれない
ってことでこの辺をなおしつつ、
・せっかくだから、ランチャーにも対応しよう
・日本語にも対応したらいいんじゃないか
・アプリ1つで、SD保存も直接計測も可能にしたいな
なんてところも手を入れたものにしようとおもいます。
3.Unixベースだと足りないものがある
構成としては、WiFiパケット測定→シリアル→中継アプリ→Wireshark という感じで流し込んでいきます。
もともと、この「中継アプリ」はUnix向けに作っているので、Windows端末ではそのまま動かない構成になっています(ファイルを中継してWireshakに送り込む関係で、その仲介をする tail というコマンドがありません)
なので、このコマンドを有効にするために、Git for Windows を導入します。
この時のポイントは、「Unixコマンドが有効になる」オプションを有効にすることです。
これを有効にしておけば、tailが使えるようになります。
4.パケット解析するアプリをいれよう
そして、次にパケット解析するアプリをいれます。wiresharkっていうソフトです。これは特にインストーラのポイントはありませんが、おわったらパスを通しておきましょう。
5.Python3を入れよう
シリアル通信をしている部分は、Pythonで書かれていますので、これも入れておく必要があります。この辺りからいれてみましょう。
このインストールでのポイントは、先ほどと同じようにpathを通しておくことと、追加のシリアル通信ライブラリをいれることです。
パスの設定は、インストール中に聞いてくるチェックをいれてもできます。
シリアル通信プログラムは、コマンドプロンプトで次のコマンドをいれれば、自動的に導入ができます。
pip install pyserial
6.ハード側を揃えよう
今回は手ごろで扱いやすく、絶縁もしっかりされてて電源も搭載されている「M5Stack」をつかいます。
ちなみに、身の回りでは発音しやすさから「えむごすたっく」って呼んでいますが、正式名称としては「えむふぁいぶすたっく」らしいです。
プログラムはここにあります。今回つかうプログラムは、m5stack用に書き換えたこのスケッチをダウンロードしてください。
ちなみにらびやんランチャーを使っている方は、すでにコンパイル済みのファイルが揃えてあるので、このファイル一式をSDカードにコピーしてください。
そうすれば、こんな感じで、すぐ起動できるようになります。
7.実際にパケットを見てみよう
では、ここまでいったら、パケットをみてみましょう。まず、M5Stack側で、アプリを起動します。
そしたら、パソコン側で通信アプリを起動します。(プローブ接続.py)
メニューに従って操作をしていくと、wiresharkが起動して、自動的に測定を開始します。(たまにwireshark起動中に「ファイルがない」的なダイアログがでるPCもありますが、それは無視してOKです)
あとは、wiresharkでパケットの中身をみてください。無線メニューの中をつかえば、統計なども参照出来て、とっても便利ですよ。
8.おまけ
・Power+Aボタンを押せば、ランチャーに戻れます。
・Bボタンで、SD記録モードに移行できます。(あとから解析できます)