Minecraft Pocket Editionはゲーム内でのユーザーの行動を監視している?

2016年10月9日 14時24分 スルメ 実験

みなさん、Minecraft遊んでますか?

Minecraftは楽しいですよね。

そんな楽しいMinecraftですが、Pocket Editionで遊んでいるときにゲーム内でのユーザーの行動を監視しているような通信が見られたので、ここに残しておきます。

利用したもの

  • iOS 9.3.5 iPhone
  • mitmproxy (ArchLinuxのパッケージから)
  • Minecraft Pocket Edition 0.15.10

検証方法

まず、iPhoneの通信をmitmproxyで見れるよう設定します(インターネットで検索すれば色々出てくるのでここでは省略)。

そして、一旦iPhoneを機内モードにしてからMinecraft Pocket Editionを起動します。

(そうでないと起動時にmitmを認識するのかアプリがクラッシュする)

無事起動できたら、iPhoneを機内モードにしたままWiFiをONにします。

mitmproxy側でShift+Fを押すとFollowingモード(新しいHTTP(S)リクエストが飛ぶと一番下までスクロールしてくれる)になるので、そのままiPhoneで適当にワールド作ったりしてみてください。

そうすると、https://minecraftprod.rtep.msgamestudios.comに何やら送っていることがわかります。

調査した所、以下のタイミングで情報を送信していることがわかりました。

  • 何らかの画面推移をしたとき(例えば、Playボタンを押してワールド一覧に行くときとか、ゲームをポーズするときとか、アイテム欄を開くときとか)
  • ワールド生成時の各タイミング(ワールド生成時にちょっと止まる所ありますが、そこで送っているよう)
  • FPSが落ちたとき?
  • 新しいチャンクに行ったとき?

他にも送信されるタイミングはあるかもしれませんが、スマホでマイクラやってると酔うのでここまでしか調査していません。

送信されるデータですが、

  • プレーヤーのワールド内でのX,Y,Z座標
  • バイオームの番号
  • Pocket Editionのバージョン番号
  • クライアントによって異なる一途のID?
  • WorldType(今回検証した限りではLocal固定だったが、マルチプレイをしているときは違うかも?)
  • gameMode(サバイバル/クリエイティブ?)
  • プラットフォームとOSのバージョン番号?(e.g. iOS 9.3.5)
  • サーバーごとの一途なID?
  • vrMode?(Windows 10などでVRを有効にしているときにtrueになる?)
  • 画面推移先?

などが送信されていました(送信されるトリガーによっても送信されるデータは異なります)

このトラッキングがWi-Fi限定かそれとも携帯回線でもなされるのかは不明ですが、iPhoneで携帯回線での通信量を1byteでも減らしたいという人はiOSの設定→Minecraft PE→モバイルデータ通信をOFFにすると良いかもしれません(どうせ携帯回線ではマルチプレイできないですし)。

また、今回はMinecraft Pocket Editionで偶然気づいただけなので、他のゲームももしかしたらトラッキング用のリクエストを飛ばしてるかもしれません。

個人的には、多くのユーザーがいるであろうMinecraft Pocket Editionでこれだけ細かくトラッキングしてよくデータを扱いきれるなあ、裏はどういう構成になってるんだろう、と思いました。おわり。