mitmproxy

星翼ナビをPCから閲覧する(+α)


はじめに

本記事はエイプリルフールとして扱っていただければ幸いです。


背景

星翼ナビ(HTN)ですが、1.0.1から脱獄対策が入ったのか、起動できなくなりました。もはやPC以外からやる意味はないので、イカリング2を見る記事も公開されているようですし、此方も公開することにします。


uuidを得る

アプリインストール時に内部的に生成されるトークンです。APIへのアクセスはこのトークンを使って行います。

これがわからないと無力です。得るのは少し難しいですが、がんばりましょう。

方法ですが、

SSLプロキシを立てて https://mobile.starwing.jp/api/auth/sign_in?uuid=*** へのアクセスが確認できたら、この***がuuidになります。35桁の英小文字・ハイフンからなる文字列です。

SSLプロキシは私はCharlesを使いました。mitmproxyでもいいと思います。

AndroidでSSLプロキシを使う場合、アプリの改造が必要らしいです。

- https://stackoverflow.com/a/40944883/2641271

- https://github.com/levyitay/AddSecurityExceptionAndroid

どこかからapkを拾ってきて、パッチして、adbから入れてください。

勿論アプリの再インストールにはデータバックアップが必須となりますのでご注意。


ブラウザでの準備


  1. Chromeで、Android UserAgentにして https://mobile.starwing.jp/ に飛ぶ

  2. デベロッパーコンソールから localStorage.auth='{"uuid":"取得したUUID"}' と入れる


  3. window.navigator.userAgentにHTN-iOS-1.0.1(または HTN-Android-1.0.1)が含まれる状態にする cTouchを使ってokです

  4. リロードする

以上でHTNが立ち上がりました。


データバックアップ

(iOS 10 HTN 1.0.0の場合不具合があるので)データバックアップは手動で取りましょう。

といっても難しくないです。

iOSなら https://psg.sqex-bridge.jp/ntv/189/reg/top?type=1&UUID=[取得したUUID]

Androidなら https://psg.sqex-bridge.jp/ntv/189/reg/top?type=2&UUID=[取得したUUID]

にアクセスすればよいです。「UUID」は大文字、取得したUUIDの中身は小文字になるので注意です。


iOS 10への引き継ぎ

(iOS 11以上、またはHTN 1.0.1以降は通常の引き継ぎが行なえますので、本項は必要ありません)

(初稿はHTN 1.0.0時代に書かれたものですので実行しても意味はありません。むしろ脱獄することで使用不能になるおそれがあります)


iOSへの引き継ぎをシミュレーションする

AndroidからiOS 10へ引き継ぐためには、引き継ぎをシミュレーションする必要があります。type=1だとiOS、type=2だとAndroidのUserAgentしか受け付けないからです。なのでOSをまたいで共存させることはできません。しかしOS種別が同じであれば無制限にログイン状態を共有できます。


  1. Chromeで、https://psg.sqex-bridge.jp/ntv/189/update/top?type=1&UUID=[UUID] にアクセスする。UUIDの生成はよくわかりません。不安ならAndroidアプリを初期化してもう一個生成しちゃいましょう。

  2. 引き継ぎ処理を行う


  3. https://mobile.starwing.jp/callback/sqex にアクセスする

  4. ログイン画面に飛ばされますが、引き続き https://mobile.starwing.jp/api/my/migrate?uuid=[UUID] にアクセスする

  5. ログイン画面に飛ばされますが、引き続き https://mobile.starwing.jp/api/auth/sign_in?uuid=[UUID] にアクセスする

  6. トークンが得られることを確認したら、localStorage.authを入力してからトップに移動。動作を確認したら、SafariでlocalStorage.authを入力する

  7. Safariを終了し、https_mobile.starwing.jp_0.localstorage*を得る


iOS端末に引き継ぎ情報を導入する


  1. iOSを 脱獄 し、SSHd(dropbear)を立てておく

  2. iOSのアプリ領域/Library/WebKit/WebsiteData/LocalStorage/にコピーする

# localstorageだけ生きてれば他のデータが全て死んでても起動するってアプリの作りとしてあかんやろorz


課金

uuidを使い回す以上、課金はしないほうがいいかもしれません。私は課金するつもりはないです(そこまでカスタマイズするものでもない)。