はじめに
本記事はエイプリルフールとして扱っていただければ幸いです。
背景
星翼ナビ(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から入れてください。
勿論アプリの再インストールにはデータバックアップが必須となりますのでご注意。
ブラウザでの準備
- Chromeで、Android UserAgentにして https://mobile.starwing.jp/ に飛ぶ
- デベロッパーコンソールから
localStorage.auth='{"uuid":"取得したUUID"}'
と入れる - window.navigator.userAgentにHTN-iOS-1.0.1(または HTN-Android-1.0.1)が含まれる状態にする cTouchを使ってokです
- リロードする
以上で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種別が同じであれば無制限にログイン状態を共有できます。
- Chromeで、https://psg.sqex-bridge.jp/ntv/189/update/top?type=1&UUID=[UUID] にアクセスする。UUIDの生成はよくわかりません。不安ならAndroidアプリを初期化してもう一個生成しちゃいましょう。
- 引き継ぎ処理を行う
- https://mobile.starwing.jp/callback/sqex にアクセスする
- ログイン画面に飛ばされますが、引き続き https://mobile.starwing.jp/api/my/migrate?uuid=[UUID] にアクセスする
- ログイン画面に飛ばされますが、引き続き https://mobile.starwing.jp/api/auth/sign_in?uuid=[UUID] にアクセスする
- トークンが得られることを確認したら、localStorage.authを入力してからトップに移動。動作を確認したら、SafariでlocalStorage.authを入力する
- Safariを終了し、
https_mobile.starwing.jp_0.localstorage*
を得る
iOS端末に引き継ぎ情報を導入する
- iOSを 脱獄 し、SSHd(dropbear)を立てておく
- iOSの
アプリ領域/Library/WebKit/WebsiteData/LocalStorage/
にコピーする
# localstorageだけ生きてれば他のデータが全て死んでても起動するってアプリの作りとしてあかんやろorz
課金
uuidを使い回す以上、課金はしないほうがいいかもしれません。私は課金するつもりはないです(そこまでカスタマイズするものでもない)。