Ir para conteúdo

Seja bem-vindo ao RageZone Brasil
Registre-se para obter acesso aos recursos do fórum. Ao se cadastrar e logar no fórum, você poderá criar e ler tópicos, responder em tópicos existentes, dar reputação, enviar mensagens privadas, postar atualizações de status, gerenciar seu perfil e deixar como quiser, e muito mais. Se você já tem uma conta, logue-se nesta tela mesmo, se não, clique aqui para se cadastrar gratuitamente!

Alternar chat Chat Abrir o chat em uma nova janela

Fiquem atentos as regras do chat, pois caso ocorra algo fora das regras, a ação será tomada sem aviso prévio.
 
Caso altere seu avatar mas o mesmo não mude no chat, recarregue a página utilizando o atalho CTRL + F5.
Se for novato, você precisará de 5 posts para usar o chat e as áreas de suporte.
@  Solk : (17 janeiro 2019 - 22:57 GMT) tem muitos links pra ele aqui no fórum
@  Solk : (17 janeiro 2019 - 22:56 GMT) @canuto1 https://www.youtube....8-EmOmr7VKuM5RA
@  canuto1 : (17 janeiro 2019 - 22:52 GMT) Qual seu canal Solk?
@  Afegos : (17 janeiro 2019 - 22:23 GMT) @solk quando conecto ao servidor o jogo para de responder, poderia me ajudar ?
@  Solk : (17 janeiro 2019 - 20:46 GMT) Muito boa noite e.e https://www.youtube....h?v=qdsTUfDTEhQ
@  Solk : (17 janeiro 2019 - 17:49 GMT) @Afegos a db foi liberada no último vídeo que eu fiz criando o servidor! Lá no canal.
@  RageZone Bot : (17 janeiro 2019 - 17:45 GMT) Novo tópico Adicionar Itens De Berkas na S2 postado em GC [ Suporte / Dúvidas ] por canuto1
@  Afegos : (17 janeiro 2019 - 17:35 GMT) Solk sabe me dizer qual é a database que uso pra rodar no seu cliente do grand chase season chaos ?
@  Solk : (17 janeiro 2019 - 15:06 GMT) Tarde https://youtu.be/sn8KYD1Vco0
@  RageZone Bot : (17 janeiro 2019 - 10:17 GMT) Novo tópico Source DDTank 9.3 postado em DDTank II por JeffzSplush
@  souzaash : (16 janeiro 2019 - 23:05 GMT) galera
@  RageZone Bot : (16 janeiro 2019 - 21:57 GMT) Novo tópico Sistema [WEB] VIP postado em DDTank [ Desenvolvimentos ] por JeffzSplush
@  canuto1 : (16 janeiro 2019 - 20:57 GMT) boa noite rapazeada ! 
@  angaro192 : (16 janeiro 2019 - 20:53 GMT) adaptação vai ser ruim, mais esse vicio que a microsoft inplantou em mim vai sair um dia.
@  angaro192 : (16 janeiro 2019 - 20:53 GMT) Me abusei do windows, partiu linux.
@  Solk : (16 janeiro 2019 - 20:15 GMT) Noite '-' https://www.youtube....h?v=4fndeDfaWCg
@  TheCash : (16 janeiro 2019 - 17:21 GMT) :D
@  RageZone Bot : (15 janeiro 2019 - 22:34 GMT) Novo tópico Desativar função no jogo! postado em GC [ Suporte / Dúvidas ] por PonegMaldito
@  Solk : (15 janeiro 2019 - 21:18 GMT) noite '-' https://www.youtube....h?v=UJtB55MaoD0
@  -ES-FrankenS... : (15 janeiro 2019 - 19:05 GMT) Boa tarde
@  RageZone Bot : (15 janeiro 2019 - 17:11 GMT) Novo tópico Recrutamento - Grand Chase Season 2 postado em Recrutamento de Equipes por canuto1
@  TheCash : (15 janeiro 2019 - 13:21 GMT) ' -'
@  leechanho : (15 janeiro 2019 - 12:41 GMT) I have many Korean private server games. If you want to exchange game files with me, send me a message.
@  RageZone Bot : (15 janeiro 2019 - 00:54 GMT) Novo tópico SOURCE GAME MIXMASTER postado em MixMaster por Campones
@  RageZone Bot : (15 janeiro 2019 - 00:45 GMT) Novo tópico MAP TOOLS postado em MixMaster por Campones
@  RageZone Bot : (14 janeiro 2019 - 21:35 GMT) Novo tópico Help Tempo De Conexao Esgotado postado em GC [ Suporte / Dúvidas ] por dioplayerof
@  TheCash : (14 janeiro 2019 - 20:17 GMT) oioioi
@  Sr Dio : (14 janeiro 2019 - 18:53 GMT) men eu tenho zica com gc s2
@  -ES-FrankenS... : (14 janeiro 2019 - 18:09 GMT) Solk, se possivel da uma olhadinha mp
@  -ES-FrankenS... : (14 janeiro 2019 - 18:00 GMT) https://www.youtube....h?v=Sb5aq5HcS1A
@  -ES-FrankenS... : (14 janeiro 2019 - 18:00 GMT) tarde
@  Solk : (14 janeiro 2019 - 17:52 GMT) tard chars '-' https://youtu.be/AEB...t=RDAEB6ibtdPZc
@  Sr Dio : (14 janeiro 2019 - 17:38 GMT) essa s2 avançada ainda fufa ushushus
@  Solk : (14 janeiro 2019 - 17:24 GMT) ç_ç
@  angaro192 : (14 janeiro 2019 - 16:06 GMT) kkkkkk
@  angaro192 : (14 janeiro 2019 - 16:06 GMT) uma coisa que tira o sono, porque o @Portugues só fala inglês?, mesmo com o nink em português sem acento.
@  RageZone Bot : (14 janeiro 2019 - 01:10 GMT) Novo tópico start.bat esqueci como faz '=' postado em GC [ Suporte / Dúvidas ] por dioplayerof
@  Sr Dio : (14 janeiro 2019 - 00:31 GMT) ai qual melhor client da s2 para pega?
@  RageZone Bot : (13 janeiro 2019 - 23:44 GMT) Novo tópico Fix em agilidade cliente MuOnline postado em [ 0.97+ ] por deviano
@  Solk : (13 janeiro 2019 - 23:28 GMT) noite chars '-' https://www.youtube....h?v=apg4q6-jBE0
@  Solk : (13 janeiro 2019 - 23:27 GMT) ta o clone dele serv ?
@  -ES-FrankenS... : (13 janeiro 2019 - 23:09 GMT) ta ai ?
@  -ES-FrankenS... : (13 janeiro 2019 - 23:09 GMT) Solk
@  TheCash : (13 janeiro 2019 - 21:59 GMT) que
@  angaro192 : (13 janeiro 2019 - 19:09 GMT) flash?
@  Dr. Evil : (13 janeiro 2019 - 18:56 GMT) http://ragezone.com....s-2019-new-game
@  RageZone Bot : (13 janeiro 2019 - 15:44 GMT) Novo tópico DDtank 5.9 não carrega [ajuda] postado em DDTank [ Tutoriais ] por brNNN
@  angaro192 : (13 janeiro 2019 - 14:41 GMT) nem assisto anime. :D
@  RageZone Bot : (12 janeiro 2019 - 22:43 GMT) Novo tópico Criar server com cliente 1.5.1 @ 1.3.6 postado em PW [ Pedidos ] por wolkerxd

Foto

[Dúvida] Estrutura dos packets de login

- - - - - packets

  • Este tópico está fechado Este tópico está fechado
10 respostas neste tópico

#1
OFFLINE   SyntaxDev

SyntaxDev

    Membro ativado

  • Membro Ativado
  • 34 posts
    • Tempo online: 18d 13h 13m 25s

Bom dia, pessoal
 
Faz um tempo que eu venho trabalhando com os packets do Grand Chase através de um emuladorzinho que fiz junto com a minha library. Até agora, dá pra chegar na tela de login normalmente. A questão é na hora de fazer o login. Os dois primeiros packets que o servidor envia ao client, logo após este ter enviado o login e a senha (em forma de hash MD5), são normais: seguem a estrutura geral dos packets do jogo. Entretanto, os packets seguintes são diferentes: os primeiros bytes não correspondem ao tamanho dos dados do packet e apenas o primeiro desses de packets diferentes possui IV (Initialization Vector). (

Please Login HERE or Register HERE to see this link!

)

 

Gostaria que alguém me desse uma luz pra entender a estrutura desses pacotes, obrigado.


Editado por SyntaxDev, 09 outubro 2016 - 07:34 .




#2
OFFLINE   Idiot

Idiot

    Membro

  • Membro VIP
  • 128 posts
    • Tempo online: 18d 17h 1m 49s

Zlib compressed data:

7c9WJbt.png

 

Non-Zlib compressed data:

MLjngdq.png

 

Note that my PacketBuffer Send() method fixes the size (adds the packet-divisible-by-8 padding to the end of the packet) automatically.

 

Good luck!


  • Asher e SyntaxDev curtiram isso

#3
OFFLINE   SyntaxDev

SyntaxDev

    Membro ativado

  • Membro Ativado
  • 34 posts
    • Tempo online: 18d 13h 13m 25s

Zlib compressed data:

7c9WJbt.png

 

Non-Zlib compressed data:

MLjngdq.png

 

Note that my PacketBuffer Send() method fixes the size (adds the packet-divisible-by-8 padding to the end of the packet) automatically.

 

Good luck!

Thank you for the reply, but I'm talking about those huge packets that the server sends after the login request. Their structure seems not to follow the others (size ~ prefix ~ IV ~ encrypted data ~ hmac hash). As I said, some of them don't even contains the 8 byte IV, lol


Editado por SyntaxDev, 09 outubro 2016 - 09:13 .


#4
OFFLINE   Idiot

Idiot

    Membro

  • Membro VIP
  • 128 posts
    • Tempo online: 18d 17h 1m 49s

Thank you for the reply, but I'm talking about those huge packets that the server sends after the login request. Their structure seems not to follow the others (size ~ prefix ~ IV ~ encrypted data ~ hmac hash). As I said, some of them don't even contains the 8 byte IV, lol

Do you mean user login (login screen to server list)? This is not a problem in my emulator.

Edit: Are you sniffing from GC History?



#5
OFFLINE   igort

igort

    Membro

  • Ragezoner
  • 196 posts
    • Tempo online: 35d 5h 18m 36s

Thank you for the reply, but I'm talking about those huge packets that the server sends after the login request. Their structure seems not to follow the others (size ~ prefix ~ IV ~ encrypted data ~ hmac hash). As I said, some of them don't even contains the 8 byte IV, lol

 

Todos os packets devem conter o IV, se não contem, tem alguma coisa errada com seu programa.

Talvez o problema que você esteja tendo é que quando o packet é muito grande, ele vem dividido, você teria que fazer com que seu programa consiga esperar o restante do packet quando receba um packet quebrado.


Editado por igort, 10 outubro 2016 - 07:57 .

  • Asher e SyntaxDev curtiram isso

#6
OFFLINE   SyntaxDev

SyntaxDev

    Membro ativado

  • Membro Ativado
  • 34 posts
    • Tempo online: 18d 13h 13m 25s

Do you mean user login (login screen to server list)? This is not a problem in my emulator.

Edit: Are you sniffing from GC History?

Yes, the login request after the username and password input. BTW, I am sniffing the packets from GCReborn.

 

 

Todos os packets devem conter o IV, se não contem, tem alguma coisa errada com seu programa.

Talvez o problema que você esteja tendo é que quando o packet é muito grande, ele vem dividido, você teria que fazer com que seu programa consiga esperar o restante do packet quando receba um packet quebrado.

Dei uma olhada rápida aqui e parece que é isso mesmo, estão fragmentados, realmente não tinha me tocado. Quando rolar um tempinho eu resolvo isso e vejo se eu consigo entrar na tela de servidores, muito obrigado.


  • Idiot curtiu isso

#7
OFFLINE   tDarkFall

tDarkFall

    Desenvolvedor

  • Fundador





  • 2.525 posts
    • Tempo online: 188d 23h 25m 12s

Prêmios do membro

                     

Não sei se o servidor de GrandChase faz isso, mas utilizando soquetes, tem algumas maneiras de gerenciar o recebimento de pacotes:

  • Lendo o tamanho do buffer, e em seguida, esperando que a leitura se complete (para isso, utilize uma variável com o total de dados retornados pela leitura).
  • Lendo um buffer de tamanho fixo (mesmo que menor, o pacote nunca passará disso).
  • Lendo byte a byte até o fim do laço, podendo ter uma flag (não recomendado, vendo que está usando bytes, porém pode ler chunks de 4 bytes, usando flags com números inteiros), ou um tamanho fixo.

Existem outros métodos que ainda não estudei, espero que este post seja útil.

Por fim, uma dica que dou é que verifiquem se o retorno do método de recebimento é menor ou igual a zero, pois caso seja, ocorreu algum problema que fez o cliente desconectar.


  • SyntaxDev curtiu isso

CPU: AMD FX™-6100 Six-Core Processor
CPU Cooler: Evercool Buffalo
GPU: nVidia GeForce GT 630
MB: ASUS MSA78L-M LX3
RAM: Kingston HyperX FURY 8GB 2008.8MHz

 

 


#8
OFFLINE   SyntaxDev

SyntaxDev

    Membro ativado

  • Membro Ativado
  • 34 posts
    • Tempo online: 18d 13h 13m 25s

Não sei se o servidor de GrandChase faz isso, mas utilizando soquetes, tem algumas maneiras de gerenciar o recebimento de pacotes:

  • Lendo o tamanho do buffer, e em seguida, esperando que a leitura se complete (para isso, utilize uma variável com o total de dados retornados pela leitura).
  • Lendo um buffer de tamanho fixo (mesmo que menor, o pacote nunca passará disso).
  • Lendo byte a byte até o fim do laço, podendo ter uma flag (não recomendado, vendo que está usando bytes, porém pode ler chunks de 4 bytes, usando flags com números inteiros), ou um tamanho fixo.

Existem outros métodos que ainda não estudei, espero que este post seja útil.

Por fim, uma dica que dou é que verifiquem se o retorno do método de recebimento é menor ou igual a zero, pois caso seja, ocorreu algum problema que fez o cliente desconectar.

Obrigado pela resposta tDarkFall. Eu implementei um gerenciamento pra isso: se o tamanho dos dados recebidos for menor do que o indicado pelos primeiros bytes do packet, o servidor aguarda pelo packet seguinte e soma ele ao buffer já existente e faz essa checagem até o tamanho do buffer ser igual ou menor ao definido pelos primeiros bytes. Quando o tamanho do buffer é igual ou menor ao size definido pelo packet, um loop manipula todos os packets presentes no buffer e assim por diante.

 

 

PS: Já consegui passar pra tela de servidores tranquilamente, obrigado a todos que ajudaram aí. :D

Spoiler


  • Idiot e tDarkFall curtiram isso

#9
OFFLINE   tDarkFall

tDarkFall

    Desenvolvedor

  • Fundador





  • 2.525 posts
    • Tempo online: 188d 23h 25m 12s

Prêmios do membro

                     

Entendido, parabéns por ter conseguido :)

Caso queira que o tópico seja trancado só avisar. Mas queria aproveitar para lhe fazer uma pergunta:

- De alguma forma, o tamanho do pacote recebido somado ao tamanho anterior pode extrapolar o dos bytes? Caso isso aconteça você já manipula isso? Caso não acho que é uma boa dica \0


CPU: AMD FX™-6100 Six-Core Processor
CPU Cooler: Evercool Buffalo
GPU: nVidia GeForce GT 630
MB: ASUS MSA78L-M LX3
RAM: Kingston HyperX FURY 8GB 2008.8MHz

 

 


#10
OFFLINE   Idiot

Idiot

    Membro

  • Membro VIP
  • 128 posts
    • Tempo online: 18d 17h 1m 49s

se o tamanho dos dados recebidos for menor do que o indicado pelos primeiros bytes do packet, o servidor aguarda pelo packet seguinte e soma ele ao buffer já existente e faz essa checagem até o tamanho do buffer ser igual ou menor ao definido pelos primeiros bytes

Awesome, remind me to send some malformed packets to your server :)



#11
OFFLINE   SyntaxDev

SyntaxDev

    Membro ativado

  • Membro Ativado
  • 34 posts
    • Tempo online: 18d 13h 13m 25s

Entendido, parabéns por ter conseguido :)

Caso queira que o tópico seja trancado só avisar. Mas queria aproveitar para lhe fazer uma pergunta:

- De alguma forma, o tamanho do pacote recebido somado ao tamanho anterior pode extrapolar o dos bytes? Caso isso aconteça você já manipula isso? Caso não acho que é uma boa dica \0

Bom, a verdade é que esse mini-emulador aí é realmente grosseiro e bem mau estruturado kkk. O tamanho do buffer tá setado pra 0xFFFF (*desperdício de memória*), então, naturalmente,  acho que não teria jeito de extrapolar isso. O meu objetivo por enquanto é estudar as necessidades de uma packet lib. pra completar meu projeto do GCNet. Se por algum acaso eu fosse começar a trabalhar em um emulador de verdade, iria ser bem diferente. Mas se eu fosse fazer esse emulador agora... eu não teria uma boa ideia pra esse problema aí, eu teria que procurar uma solução realmente efetiva.

 

Quanto ao tópico, se não tiver mais nenhuma questão pra levantar, fica à vontade pra fechar.

 

 

Edit: @Idiot don't worry, as I pointed before, it's just a mini-emulator and I'm aware of its lack of security, stability and so on. It does not have ANY appropriate buffer handling method because this one is supposed to be a simple local server.  ^_^


Editado por SyntaxDev, 11 outubro 2016 - 10:36 .

  • Idiot e codelesss curtiram isso





Tópicos que também usam as tags packets:

0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos