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記録モードに移行できます。(あとから解析できます)



開発したり研究したりするのに時間と費用がとてもかかるので、頂いたお気持ちはその費用に補填させていただきます。