スマホの通信(WiFi)をキャプチャする必要があり、少しネットを調べてみたのですが、あまりいい方法が見つからなかったので思いついた方法を試してみました。
試してみた結果、いい感じにスマホが送受信するパケットをWireSharkでキャプチャすることができたので記事として挙げておきたいと思います。
注意
紹介する方法はWindows7でしかできない方法になります。他のOSについては別途試したときに記事を書きたいと思います。
作戦
準備するもの
パソコンをWiFiのAPにする場合、親機になれるUSBの無線LANドングルがあれば実現可能です。
USB無線LANドングルは1つの独立したネットワークアダプタとして認識されるのでWireSharkでキャプチャするときも便利です。
いろいろ調べてみると、バッファローのWLI-UC-GNM2SであればWindows7であればWiFiの親機のになれるとのことで購入して試してみました。
BUFFALO エアステーション 11n対応 11g/b USB2.0用 無線LAN子機 親機・子機同時モード対応 WLI-UC-GNM2S
- 出版社/メーカー: バッファロー
- 発売日: 2017/05/16
- メディア: Personal Computers
- この商品を含むブログを見る
手順
USBドングルを手元に用意できたら、まずは各種ドライバ・ユーティリティーソフトをインストールします。
ちなみに、インストール後にソフトウェアルーターを起動することができるのですが、WireSharkがアダプタを認識できないようなので再起動した方がよさそうです。
インストール後ソフトウェアルーターを起動するとタスクトレイにアイコンが表示されます。
右クリックして"オプション"からSSIDやパスワードの設定が可能です。
後はソフトウェアルーターを起動し、スマホから接続するだけです。結構簡単につながりました。
このソフトウェアルータにはDHCPの機能も提供されているようで、私が試した環境ではスマホ側のIPは、192.168.123.26になりました。
無事接続できるとソフトウェアルータの画面で接続台数が1になっている事が確認できます。
さて、APとして機能すれば後はWireSharkでパケットを覗いてみるだけです。
WireSharkを起動すると、私の環境ではワイヤレスネットワーク接続2というインターフェースが追加されていました。
早速立ち上げて、スマホを操作してみるといい感じにパケットがキャプチャできています!
大成功!
その他のやり方は?
今回試したやり方だとPCがWindows7に限定されます。上記のやり方を試した後で少し考えたのですが、WiFiのアダプターがついているPCであればソフトウェアルーターさえ用意できればUSBドングルを購入しなくても同じようにキャプチャできるような気がします。
少し調べてみるとsoftAPというソフトウェアルータ機能もあるようですので今度はそのやり方を試してみたいと思います。
また、WiFiルーターのパケットをキャプチャするという方法も可能です。
WiFiとWANをつなぐレイヤーでキャプチャすればスマホのパケットも見ることができそうです。
この場合、WiFiルータとONUミラーリング機能を持ったスイッチが必要になります。
高機能なスイッチは高いイメージがありますが、NETGEARの製品で手頃に買えるタイプの商品がおすすめです。私も5ポートのタイプの商品を愛用しています。
NETGEAR スイッチングハブ ギガビット5ポート/金属シャーシ/VLAN QoS IGMP/外部電源/ファンレス静音設計/省エネ/無償永久保証 GS105E-200JPS
- 出版社/メーカー: ネットギア
- 発売日: 2014/05/26
- メディア: Personal Computers
- この商品を含むブログ (3件) を見る
組込開発をしていると、試験フェーズで、ネットワークの機能を試験する際に、意図した通信が出来ているかパケットレベルで見たい時がありますが、こういったミラーリング機能があるスイッチがあると試験が捗りますし、そもそもないと試験ができないような場合もあります。
追記
WireSharkネタですが、pcapファイルをC言語で出力するコードを書いてみました。
mcommit.hatenadiary.com