私はプレゼントで「Hitster」というボードゲームを受け取りました。これは、曲を特定し、リリース年やアーティストなどを当てるゲームです。各カードの表面には、アーティストまたはバンドの名前、曲のリリース年、曲のタイトルが記載されています。裏面にはQRコードがあり、Hitsterアプリを使用してスキャンすると、SpotifyまたはApple Musicを通じて音楽が再生されます。残念ながら、アプリを使用するにはApple MusicまたはSpotifyのサブスクリプションが必要です。本のブログ投稿では、Androidアプリのリバースエンジニアリングを深く掘り下げ、彼らの非常に不器用なデータ隠蔽試みを回避する方法を紹介します。
各カードの表面には、アーティストまたはバンドの名前、曲のリリース年、曲のタイトルが記載されています。裏面にはQRコードがあります。スキャンすると、ゲームの地域(私の場合はDE)とカードIDを含む2つの要素があるURLのパスに導かれます。その後、アプリ内またはSpotifyを通じて音楽が再生され始めます。これは、カードID ⇒ Spotifyトラック間のマッピングが存在することを意味します。各地域ごとに複数のカードバージョンがありますので、カードIDだけでは曲を特定するのに十分ではありません。
私はいつもからないAndroid APKダウンロードサイトからアプリのAPKを取得し、jadxを使用してデコンパイルされたJavaコードを取得しました。少し調べた後、res/rawの下にいくつかのJSONファイルを見つけました。そのうち1つはgameset_database_4.jsonと呼ばれ、暗号化されているように見えました。フォーマットを特定するためのツールを実行し、Base64と返答しました。これはエンコーディングですので、まずデコードしました。結果はまだ読み取れず、AESまたは類似のもので暗号化されたと推測しました。これまでAndroidアプリのリバースエンジニアリングをしたことがなかったので、世界中でAESを検索し始めました。そしてどうでしょうか?k43.javaというファイルがあり、復号化プロセス全体がその場で明らかになっていました!
FAQ Q: Hitsterアプリはゲームデータベースをどのように復号化しますか?
FAQ A: アプリはBase64エンコーディングおよびAES/GCM/NoPaddingで暗号化されたJSONファイルを使用します。復号化キーは整数と秘密文字列の連結からSHA-256を使用して導き出されます。IVはデコードされたデータの最初の12バイトです。
出典: Hacker News · 要約:HeadlinesBriefing