Утилита для получения твердого кодированных секретов в клиенте Transformice.
Для построения вам следует использовать файл asconfig.json для составления файла TFMSecretsLeaker.swf . Это можно сделать с помощью VSCODE-AS3MXML или ASCONFIGC.
Вам также нужно будет разместить файлы SWC для следующих библиотек в папке lib на том же уровне, что и файл asconfig.json :
Если вы хотите спасти себя от хлопот, то в выпусках этого репо также есть предварительно построенный SWF.
При запуске построенного файла SWF он будет trace полученные секреты. Их можно просмотреть в чем-то вроде FFDEC, хотя полезный сценарий leak-secrets.py также предоставляется для получения вывода с использованием автономного отладочного проектора, используемого так: так:
./leak-secrets.py <path/to/TFMSecretsLeaker.swf>
При запуске SWF появится окно на короткое время, кажется, начинает загружать игру, а затем выйдет. Это нормально.
К сожалению, в настоящее время это не совместимо с Ruffle, поскольку в настоящее время он не реализует fscommand("quit") .
Сетевой протокол Transformice использует несколько твердого кодированных, часто меняющихся секретов, которые содержатся в клиенте. Каждые пять минут или около того, в игре подается другой основной SWF, меняя большинство этих твердых кодированных секретов. Поэтому необходимо иметь динамическую утилиту для автоматического получения этих секретов, поскольку они меняются слишком часто, чтобы просто получить вручную.
Эти секреты включают:
1.740 . Игровая версия, о которой сообщается, является компонентом этого 740 и отправляется в пакет рукопожатия, который клиент отправляет на сервер. Это не так часто меняется, как другие секреты.Вскоре после того, как последовательность рукопожатия была завершена клиентом и сервером, сервер отправит пакет клиенту, чтобы убедиться, что клиент является официальным и в противном случае правильным (то есть не бот). Этот пакет содержит «токен проверки» (целое число), который затем клиент будет использовать в своем ответе. Клиент ответит зашифрованным пакетом, используя алгоритм Xxtea с токеном проверки, преобразованным в строку в качестве имени для ключа. (Открытый) данные пакетов начнутся с токена проверки, а затем некоторых полупередачи, жестко-кодированных полей, с токеном проверки снова вброшен среди него. Это, кажется, не так часто меняется, как другие секреты, но это меняется.
Что это сообщает, это шестнадцатеричная строка, представляющая строку байтов открытого тела этого пакета (в Python, что вы могли бы использовать bytes.fromhex включения). Вместо того, куда должен идти токен проверки, используется aabbccdd и должен быть заменен фактическим токеном с упакованной проверкой.
Другие игры Atelier 801 имеют очень похожие структуры для трансформации, и поэтому эта утилита может также поддерживать следующие игры:
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 не поставляется, то утилита по умолчанию будет по умолчанию в секретах Transformice.