通信を見るとは
普通の人は「ネットワーク」などというものの事は気にもせず、Web を見たり、SNS を使ったりするための電波、という感覚だと思いますが、実は色々と複雑な取り決めや仕組みの元に成り立っています。その仕組みを使うことで iPhone がどんな通信をしているかを見ることができます。ただし「見える」であって「分かる」ではありません。どういう通信をしているかを「分かる」ためには、先ほどの色々な取り決めや仕組みを理解しないとならないので、このエントリでは「見える」ところまでをご紹介します。
iPhone が通信をする時には電波を使います。この電波は家の中の Wifi のアンテナを経由したり、携帯電話会社のアンテナを経由したりして目標のサービスなどにデータを送ったり、そこからデータを受け取ったりします。
このアンテナのところにはネットワークを中継する機械(ルーターなど)があり、中継部分に別の機械を繋いだりすることでそこを流れているデータの中身を見ることができます。このデータの中身を見ることをキャプチャする、と言いますが、流れるデータのスクリーンショットを連続して撮っていくようなイメージです。
良くニュースなどで話題になるネットワークの盗聴なども同じような方法でデータを盗み見るものだと思ってください。ただ、ここで流れているデータを見ることができても、必ずしもそのデータの中身が分かるわけではありませんし(データが暗号化されている通信もある)、そもそもそんなに簡単にネットワークのデータを盗み見るための機械を取り付けることができるわけではありません。
どうやって iPhone の通信を採取するのか
先ほどの方法は自宅の Wifi ルーターに別の機器を取り付けたりするイメージです。これはなかなか大変ですし、携帯電話会社の電波を使った通信は携帯電話会社の設備に機器を繋げることも当然できません。
ところが iPhone には、その通信を見るための仕組みが準備されています。iPhone と Mac をライトニングケーブルで繋いで iPhone のネットワーク通信を Mac で見ることができるのです。(Xcode が必要なので、これをやってみる方は XCode をインストールしておきましょう)。
先日のエントリ、 IOS 8 からサードパーティキーボードが使えるようになって便利?不安? もこの方法で調べました。
なお、この方法は Apple から公式に公開されている情報です。Developer Program のライセンス下の情報では無く、Developer ライブラリの情報として誰でも見ることができるのでご紹介します。
Technical Q&A QA1176: Getting a Packet Trace
事前準備として、Xcode をインストールしていることと、iPhone の UUID を調べておく必要があります。
まず、Mac と iPhone をライトニングケーブルで繋ぎます。繋いだらターミナルアプリを立ち上げて、次のコマンドを入力します。’xxxxx…’ となっているところは iPhone の UUID を入力してください。
$ rvictl -s xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
以下のように ‘[SUCCEEDED]’ と出れば成功です。
Starting device xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [SUCCEEDED] with interface rvi0
このコマンドにより iPhone の通信を見るためのインターフェースが ‘rvi0’ という名前で Mac 側に作られました。
後は、 tcpdump というコマンドを使って、この ‘rvi0’ のデータをキャプチャすれば OK です。
$ sudo tcpdump -i rvi0 -n -s 1600 -w iphone.pcap
このコマンドを実行したら、iPhone で何か操作をすると、その時のネットワークに流れるデータを Mac でログ(iPhone.pcap)として保存することができます。あまり多くなると解析が大変になるので、ダンプを取る期間は短くした方が良いです。ダンプの取得をやめるには CTRL+C ボタンで終了させます。
キャプチャが終わったら iPhone 用のデバイスは削除しておきましょう。先ほどと同じように UUID を指定してコマンドを実行します。
$ rvictl -x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
今回も ‘[SUCCEEDED]’ と出れば正解です。
Stopping device xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [SUCCEEDED]
次にキャプチャのデータを見てみましょう。
キャプチャしたデータを見る
tcpdump を使ってキャプチャしたデータは WireShark というアプリを使って読み込ませると見ることができます。この WireShark を使うには XQuatz が必要なので両方インストールしておいてください。
WireShark を立ち上げて(最初は立ち上がるのに時間が掛かるかもしれません)、先ほどの iPhone.pcap を読み込ませると次のような画面が表示されます。これで、ネットワークを流れる情報を見ることができました。
実際に何が行われているのか、はこの画面に表示されている内容を十分に理解しないと分からないので、今日はココまでにします。何かの理由でネットワークを見る必要が出てきた時にはご活用ください。
最後まで読んでいただきありがとうございます。
左のアイコンをクリックして、このブログを Feedly に登録していただけると嬉しいです
Facebook ページでも情報を発信していますのでよろしかったら「いいね!」をお願いします
RSSリーダへの登録は こちら からどうぞ。
コメントを残す