ポケモンGOを使って実践!5分でできるパケット解析

※この記事はWEB/ITエンジニアまたは上級者向けの内容となります。

 

「Pokémon GO」(以下、ポケモンGO)がリリースされて1ヶ月が経過しました(2016年7月22日にリリース、本記事は8月末時点でのものとなります)。
Google Trends を見る限りでは、社会現象を巻き起こしたポケモンGO熱もだいぶ落ち着いてきたようです。

ポケモンGO - Google Trends

大フィーバーの真っ只中、サーバはどこだ? ポケモンGO の通信をキャプチャしてみたという記事を目にしました。リリース直後のPokémon GOアプリのパケットを解析してインフラを特定するという素晴らしい内容になっています。大流行の裏側では Akamai 、AWS(Amazon)、Google … 超ハイテク企業が活躍していたのか!とゲームそのものよりも楽しんでしまいました。

さて、記事を読んでみて実際に自分の手と目を使って確認したい方もいるのではないでしょうか?あまりいないかもしれませんが…5分でできるパケット解析をご紹介します。

※コラム冒頭の注のようにWEB/ITエンジニア向けとなります。いわゆる「黒い画面」で、コマンドとよばれる呪文(?)により直接Macと対話します。

 

必要なハードウェア

・iPhone6S (iOS 9.3.3)
・Mac (OS X El Capitan‎ 10.11.5)
・iPhoneのUSBケーブル
※Windows,Androidでもパケットキャプチャーは可能だとは思いますが、本記事は上記のハードウェアにて実施いたしました。

 

ソフトウェア

・iTunes(バージョン 12.4.2.4)
・Xcode (バージョン 7.3.1)

いずれも無料・鉄板ソフトです。Xcodeがインストールされていない場合は下記を参照ください。
https://developer.apple.com/xcode/jp/

 

手順まとめ

1. Macのターミナルを起動

まずターミナルを起動します。以下のコマンドはすべてターミナル上で実行します。

 

2. ifconfigを実行

上記コマンドを実行すると、(お使いのPCにより異なりますが)下記のような結果が表示されるかと思います(とりあえず確認のみでOK)。
lo0 gif0 stf0 en0 en1 p2p0 fw0 ppp0 utun0

 

3. iPhoneとMacを接続

iPhoneをUSBでMacに接続します。

 

4. iTunesでiPhoneのUDIDを確認

iTunuesでiPhoneのUDID(Unique Device Identifier)を調べます。UDIDとはデバイスに割り当てられている固有な識別コードです。
UDIDの確認方法は下記ページにわかりやすくまとまっています。
http://mattsudev.hatenablog.com/entry/2015/10/05/120815
http://mushikago.com/i/?p=1833

 

5. Remote Virtual Interface(RVI)の作成

Remote Virtual Interface(RVI)を作成します。Xcodeがインストールされていればコマンド一発です。

たとえば以下のような感じです。UDIDはダミーなので、手元のiPhoneのUDIDに置き換えてください。

 

6. 再びifconfigを実行

ステップ2と同じコマンドを再実行します。

お使いのPC環境により異なりますが、下記のような結果が表示されるかと思います。
lo0 gif0 stf0 en0 en1 p2p0 fw0 ppp0 utun0 rvi0

rvi0 が増えています。(お使いのPC環境によりrvi0でないかもしれませんが、ステップ2のときから増えたもののうち rvi[数字] というものをチェックすればOKです)

 

7. キャプチャー開始

rvi0 はステップ6で確認したものとなりますので、rvi0 でない場合は適宜置き換えてください。なお、上記コマンドを実行後するとMacの管理ユーザーのパスワードを聞かれるので入力ください。

 

8. ポケモンGOを起動

(ターミナルはそのままの状態で)接続中のiPhoneで「ポケモンGO」を起動します。
すると、ターミナルにパケットキャプチャーが表示されていくのを確認できます!


ポケモンGOのパケット解析

9. キャプチャー終了

control + C で終了します。(キーボードの「control」と「C」ボタンの同時押しです。)

 

10. Remote Virtual Interface(RVI)の破棄

 

以上、5分でできるパケット解析でした。