MEMO2017-07-01iOSアプリの通信内容をキャプチャしてみる今やっているスマホゲームがどんなAPI設計をしているのか、どんなjsonが返ってきてるのか気になったので、iOSアプリの通信内容をキャプチャする方法を調べて試してみたのでそのメモ。端末をMacに接続後、iTunesよりUUIDを取得。[UUID]WiresharkでパケットキャプチャWiresharkを起動し、先程設定したリモート仮想インタフェースを選択。(多分rvi0として設定されているはず)後は好きに通信内容を覗けば良い。通信内容を覗けたものの、レスポンスが暗号化されているみたいでどんなjsonを受け取っているのか確認できなかった。(当然といえば当然)ただ、リクエストURLは確認出来た。APIへのアクセスに、他のメソッドを使用するべき場合でも全てGETを使用しており味わい深い。HTTPリクエストのパラメータに&t=1498915892334&e=bab31dd31c14866e3f489f9fbdc93ce7&gz=1&market=3&channel=2&version=3.0.0といったようなものが付いており、versionはそのままアプリバージョン、marketは国のカテゴリもしくはiOS、Androidの区別か。tはUnixTimeだけども何のためにパラメータに乗せているのかわからなかった。eは推測でしか無いが恐らく毎レスポンスにトークンが含まれておりそのトークンではないかと思われる。通信毎にトークンを生成することで不正なAPIアクセスを防ごうとしているのではないだろうか。(リクエスト毎にトークンを作り直す手法は「艦これAPIを叩く」でmasarakkiさんが書いてた)レスポンスボディの復号化が出来れば一番なんだろうけど、暗号化をしているということは恐らくメンテナンス毎に鍵を変えているだろうし、復号するのは現実的じゃなさそう。