Transformiceクライアント内でハードコードされた秘密を取得するためのユーティリティ。
ビルドするには、asconfig.jsonファイルを使用して、 TFMSecretsLeaker.swfファイルをコンパイルする必要があります。これは、VSCODE-AS3MXMLまたはASCONFIGCで実行できます。
また、 asconfig.jsonファイルと同じレベルにあるlibフォルダーの下に、次のライブラリのSWCファイルを配置する必要があります。
手間をかけたい場合は、このレポのリリースに事前に構築されたSWFもあります。
構築されたSWFファイルを実行すると、取得した秘密をtraceします。これらはFFDECのようなもので見ることができますが、有用なleak-secrets.pyスクリプトは、次のように使用されるスタンドアロンデバッグプロジェクターを使用して出力を取得するためにも提供されています。
./leak-secrets.py <path/to/TFMSecretsLeaker.swf>
SWFを実行すると、ウィンドウが少しの間ポップアップされ、ゲームのロードを開始してから終了します。これは正常です。
残念ながら、これは現在fscommand("quit")を実装していないため、フリルと互換性がありません。
Transformiceのネットワーキングプロトコルは、クライアント内に含まれるいくつかのハードコーディングされた、頻繁に変化する秘密を利用しています。 5分ごとに、ゲームに異なるメインSWFが提供され、これらのハードコーディングされた秘密のほとんどが変更されます。したがって、これらの秘密を自動的に取得するために動的ユーティリティを持つ必要があります。
これらの秘密は次のとおりです。
1.740のようなテキストを表示します。このレポートがそのレポートであるゲームバージョンは、その740コンポーネントであり、クライアントがサーバーに送信するハンドシェイクパケットで送信されます。これは、他の秘密ほど頻繁に変化しません。クライアントとサーバーによって握手シーケンスが完了した直後に、サーバーはクライアントにパケットを送信して、クライアントが公式であり、そうでなければ適切であることを確認します(つまり、ボットではありません)。このパケットには、クライアントが応答で使用する「検証トークン」(整数)が含まれています。クライアントは、キーの名前として文字列に変換された検証トークンを使用して、XXTEAアルゴリズムを使用して、暗号化されたパケットで応答します。 (Plantext)パケットデータは、検証トークンから始まり、次にいくつかの半ランダムのハードコード化されたフィールドから始まり、検証トークンが再びその真っ巻き状に投げ込まれます。これは他の秘密ほど頻繁に変化するわけではないようですが、変化します。
これが報告されているのは、このパケットのプレーンテキスト本文の一連のバイトを表す六角文字列です(pythonで、 bytes.fromhexを使用することができるもの)。検証トークンの代わりに、 aabbccddが使用され、実際の梱包された検証トークンに置き換える必要があります。
他のAtelier 801ゲームには、Transformiceと非常によく似た構造があるため、このユーティリティは次のゲームもサポートできます。
TransformiceとDead Mazeは、クライアント検証テンプレートを持つ唯一のゲームです。したがって、他の人にとっては、クライアント検証テンプレートは追跡されません。
特定のゲームの秘密を取得するには、その名前をgameローダーパラメーターに提供する必要があります。たとえば、 leak-secrets.pyスクリプトを使用して、次の方法を以下に示します。
./leak-secrets.py path/to/TFMSecretsLeaker.swf?game=transformice
./leak-secrets.py path/to/TFMSecretsLeaker.swf?game=deadmaze
./leak-secrets.py path/to/TFMSecretsLeaker.swf?game=bouboum
./leak-secrets.py path/to/TFMSecretsLeaker.swf?game=nekodancer
./leak-secrets.py path/to/TFMSecretsLeaker.swf?game=fortoresse
gameパラメーターが提供されていない場合、ユーティリティはデフォルトで変換の秘密の漏れになります。