Como funciona el Transformice Protocolo

Ir em baixo

Como funciona el Transformice Protocolo

Mensagem  masterpro em Ter Jan 28, 2014 9:44 pm

Oi,pessoas da TFMDev ^_^ daqui escreve o Anjo.Trazendo hoje,uma explicação,para esse pessoal iniciante na àrea,que acha que vai ter um server lotado da noite para o dia.Uma "aula" sobre o protocolo do Transformice.Bem,aqui vai.Espero que gostem.

Informação Básica

1º O protocolo Transformice está na big endian. Isso significa que o número de 1234 (0x4d2 hex) é escrito como dois bytes (um curto) da seguinte forma: 04 d2

2º A menos que indicado de outro modo, cadeias deverão ser codificados em UTF-8.

3º O servidor não irá expulsá-lo para um pacote inválido, mas definitivamente vai expulsá-lo para um prefixo CCC inválido


Estrutura de Pacote

Cada pacote no protocolo Transformice prefixada por um número inteiro que transporta o comprimento total do pacote (incluindo este cabeçalho). Depois disso, se o pacote é enviado pelo cliente, siga quatro bytes apelidado como impressão digital . Uma única impressão digital é gerado para cada pacote enviado e sem ele, seus pacotes serão inutilizados. pacotes do servidor não contêm uma impressão digital . Como para gerar uma impressão digital será explicado abaixo. Em seguida, mais dois bytes seguir, que são chamados C e CC . Estes identificar o conteúdo do pacote (campos, argumentos) que são representados por bytes, shorts, cordas ou outros dados binários.

Na versão mais recente do protocolo, os códigos pacotes (CCCs dublados) de pacotes de saída são mutantes na mesma proporção como a chave de conexão. Isso se aplica a cada novo pacote de protocolo, mas VERSÃO e BULLE.

00 00 00 1-B 03 04 06 05 06 06 00 0f 41 20 74 65 73 74 20 6d 65 73 73 61 67 65 21
[Packet len] [impressão digital] [C CC] [str len] [A TestMessage! ]
O código de 6,6 significa mensagem de chat. O único argumento é uma string, que tem um pouco antes de ele indicando o seu comprimento. Uma tabela de conhecidos C, códigos de CC podem ser encontrados aqui . No entanto, antes que você possa entrar no negócio de análise de pacotes, você deve aprender sobre o protocolo de idade.

O protocolo antigo armazena campos, incluindo números, como strings. Tig considerou esta ineficiente e veio com o novo protocolo e fez alguns dos pacotes mais comuns usá-lo (bate-papo, o movimento). Um monte de pacotes, no entanto, ainda usam o antigo protocolo, os pacotes dos quais estão agora incorporadas em novos pacotes de protocolo de C e CC 1,1.

Formato do protocolo Velho é o comprimento de campos e CCC como um curto, C, CC como bytes e os campos, que são UTF-8 cordas separadas pelo byte 0x01.

00 00 00 01 01 00 4f 47 08 0a 01 4f 77 6c 6f 79
[Pacote len] [C CC] [arglen [CCC] {| | O wloy

73 69 75 73 01 35 30 30 2c 2c 2c 30 35 37 30 2c
SIU | | 5 0, 0, 0, 5 7, 0

01 31 32 37 01 30 31 2c 2c 2c 35 36 2c 31 32 37
| | 1 2 7 | | 0, 1, 5, 6, 1 2 7

2c 31 32 38 01 30 30 2c 2c 2c 30 30 2c 30 01 54
, 1 2 8 | | 0, 0, 0, 0, 0 | | T

68 65 20 53 65 63 6f 6e 64 20 4f 72 64 65 72
ele S egunda O rder}
Este é o pacote de informação do perfil sobre um rato (/ perfil) recebido a partir de um servidor (portanto, não têm uma impressão digital). Como demonstrado, todos os dados são enviados como uma seqüência, mesmo que seja números. Para facilitar a leitura, aqui está todo o pacote de protocolo de idade, com. o que significa \ x01:

Owloysius.50, 0,0,57,0.127.0,1,5,6,127,128.0,0,0,0,0. A segunda ordem

Estabelecendo uma Conexão

Para se conectar ao servidor, enviar um pacote de 28,1 para o servidor que contém a versão do protocolo, a chave de conexão eo número 0x17ed (tamanho do carregador). A chave de conexão é uma seqüência única recompilados para o cliente oficial a cada dois minutos, pf. Uma vez que não tem os dados necessários para gerar uma impressão digital, no entanto, basta enviar quatro bytes de zeros. O pacote resultante pode ter esta aparência:

00000000 00 00 00 26 00 00 00 00 1C 01 00 16 00 16 67 71 ... e .... Gq ......
00000010 74 78 78 64 78 69 7 79 68 77 64 6f 62 74 76 70 txxdxizy hwdobtvp
00000020 65 68 6d 6f 17 ed ehmo ..
Se você fizer tudo corretamente, você deve receber de volta um grande 26, 22 pacote contendo kikoo.swf 1) . Você pode ignorar isso e focar o próximo pacote, 26; 27, que contém os dados para o arranque de geração de impressão digital.

Gerando uma Impressão Digital

O segundo campo, de 26, 27 é uma matriz de números. Salve cada número em uma lista conhecida como MDT, substituindo 0 com 10. Você também vai precisar do terceiro campo, um inteiro conhecido como CMDTEC 2) .

Para gerar uma impressão digital para um pacote, faça o seguinte (pseudocódigo Python e similares):

loc3 = CMDTEC% 9000 + 1000
fingerprint = b ""
impressão digital + = bytes ( MDT [ int ( loc3 / 1000 ) ] )
impressão digital + = bytes ( MDT [ int ( loc3 / 100 ) % 10 ] )
da impressão digital + = bytes ( MDT [ int ( loc3 / 10 ) % 10 ] )
da impressão digital + = bytes ( MDT [ loc3% 10 ] )
Um exemplo em C #:

int dividendo = Cmdtec % 9000 + 1000 ;
var fingerprintBytes = new byte [ 4 ] ;

fingerprintBytes [ 0 ] = byte. Parse ( Mdt [ dividend / 1000 ] . ToString ( "X" ) , System. Globalization . NumberStyles . HexNumber ) ;
fingerprintBytes [ 1 ] = byte. Parse ( Mdt [ ( dividend / 100 ) % 10 ] . ToString ( "X" ) , System. Globalization . NumberStyles . HexNumber ) ;
fingerprintBytes [ 2 ] = byte. Parse ( Mdt [ ( dividend / 10 ) % 10 ] . ToString ( "X" ) , System. Globalization . NumberStyles . HexNumber ) ;
fingerprintBytes [ 3 ] = byte. Parse ( Mdt [ dividend % 10 ] . ToString ( "X" ) , System. Globalization . NumberStyles . HexNumber ) ;
Depois de cada pacote enviado, aumentar CMDTEC por um .

O Login

Depois de conectar-se ao servidor com sucesso, a próxima coisa a fazer é realmente faça o login e entrar no jogo. Se você já tem uma estrutura boa construção de pacotes, isso deve ser simples o suficiente.

Para iniciar a sessão, basta enviar um velho protocolo 26,4 pacote com seu nome de usuário, a senha de hash por sha256, uma sala para se juntar a 3) e uma url origem - " http://www.transformice.com/Transformice.swf?n = 1335716949138 "+ base64 (sha256 (sha256 (senha) + sal)) (ver em hotéis informações sobre pacotes) parece funcionar muito bem.

Após um login bem-sucedido, você receberá um 44,1 (2c 01h) pacote do principal servidor que contém o IP de um segundo, chamado Bulle 4) do servidor e uma chave de conexão. Você precisa abrir outra tomada e conectar-se ao IP que você recebeu e enviar um pacote de 44,1 com a chave, depois disso, você está considerado na sala.

Fonte: KIKOO.FORMICE.COM
avatar
masterpro
Administrador
Administrador

Mensagens : 42
Pontos : 127
Data de inscrição : 17/01/2014

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum