Uma utilidade para obter os segredos codificados no cliente Transformice.
Para construir, você deve usar o arquivo asconfig.json para compilar o arquivo TFMSecretsLeaker.swf . Isso pode ser feito com o VSCODE-AS3MXML ou ASCONFIGC.
Você também precisará colocar os arquivos SWC para as seguintes bibliotecas em uma pasta lib no mesmo nível do arquivo asconfig.json :
Se você deseja salvar-se com o aborrecimento, também há um SWF pré-construído nos lançamentos deste repositório.
Ao executar o arquivo SWF construído, ele trace os segredos obtidos. Eles podem ser vistos em algo como o FFDEC, embora um script útil leak-secrets.py também seja fornecido para obter a saída usando o projetor de depuração independente, usado como assim:
./leak-secrets.py <path/to/TFMSecretsLeaker.swf>
Ao executar o SWF, uma janela aparece por um curto momento, parece começar a carregar o jogo e depois sair. Isso é normal.
Infelizmente, atualmente não é compatível com o Ruffle, pois atualmente não implementa fscommand("quit") .
O protocolo de rede da Transformice utiliza vários segredos codificados e com frequência que estão contidos no cliente. A cada cinco minutos, um SWF principal diferente é servido para o jogo, mudando a maioria desses segredos codificados. Portanto, é necessário ter um utilitário dinâmico para obter esses segredos automaticamente, pois eles mudam com muita frequência para obter manualmente.
Esses segredos incluem:
1.740 . A versão do jogo que este relata é o componente 740 disso e é enviado no pacote de handshake que o cliente envia para o servidor. Isso não muda com tanta frequência quanto os outros segredos.Logo após a sequência de handshake ter sido concluída pelo cliente e pelo servidor, o servidor enviará um pacote para o cliente para garantir que o cliente seja oficial e adequado (ou seja, não é um bot). Este pacote contém um "token de verificação" (um número inteiro) que o cliente usará em sua resposta. O cliente responderá com um pacote cifrado usando o algoritmo XXTEA com o token de verificação convertido em uma string como o nome da chave. Os dados do pacote (de texto simples) começarão com o token de verificação e, em seguida, alguns campos semi-aleatórios e codificados, com o token de verificação jogado novamente no meio dele. Isso não parece mudar tão frequentemente quanto os outros segredos, mas muda.
O que este relata é uma sequência hexadecimal representando uma sequência de bytes do corpo de texto simples deste pacote (em Python, algo que você poderia usar bytes.fromhex ON). No lugar de onde o token de verificação deve ir, aabbccdd é usado e deve ser substituído pelo token de verificação embalado real.
Outros jogos do Atelier 801 têm estruturas muito semelhantes para transformar, e esse utilitário também é capaz de suportar os seguintes jogos:
Transformice e Dead Maze são os únicos jogos que têm modelos de verificação de clientes. E assim, para os outros, nenhum modelo de verificação do cliente será rastreado.
Para obter os segredos para um jogo específico, seu nome deve ser fornecido ao parâmetro do carregador game . Por exemplo, aqui está como você faria isso usando o script 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
Se nenhum parâmetro game for fornecido, o utilitário será inadimplente para vazar os segredos da Transformice.