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.
@  Lime Serenity : (25 março 2019 - 10:53 GMT) Hello everyone ~
@  Dr. Evil : (25 março 2019 - 01:28 GMT) que isso? é pra beijar?
@  TheCash : (25 março 2019 - 00:33 GMT) que
@  casther : (24 março 2019 - 23:41 GMT) alguem tem convite bj share?
@  casther : (24 março 2019 - 23:41 GMT) pessoal
@  casther : (24 março 2019 - 23:41 GMT) fala pessol
@  andreop : (24 março 2019 - 22:34 GMT) Quanto tempo não venho por aqui kk
@  Solk : (24 março 2019 - 22:18 GMT) noite '-
@  andreop : (24 março 2019 - 22:07 GMT) Opa
@  TheCash : (24 março 2019 - 19:41 GMT) noite chars '-'
@  RageZone Bot : (24 março 2019 - 17:58 GMT) Novo tópico [Request] Grand Chase Client English postado em GC [ Pedidos ] por ecxnkai
@  angaro192 : (24 março 2019 - 15:35 GMT) Acho a hud do mu season 12 perfeita de linda, poderiam adaptar ela na 99z que é a minha versão favorita.
@  sonkral : (24 março 2019 - 13:33 GMT) 4.1 db tank ?
@  RageZone Bot : (24 março 2019 - 13:32 GMT) Novo tópico Novo servidor Season 12 + Custom Season 13 [China] postado em [ 1.08+ ] por diegoxd
@  kernel : (24 março 2019 - 10:55 GMT) dia chars '-
@  RageZone Bot : (24 março 2019 - 07:55 GMT) Novo tópico Files 4.1 postado em DDTank 3.0 por kodaf
@  Dr. Evil : (23 março 2019 - 21:17 GMT) noite
@  Solk : (23 março 2019 - 21:16 GMT) Noite chars '-' https://www.youtube....h?v=0svu_lMdkRQ
@  angaro192 : (23 março 2019 - 19:16 GMT) :p
@  TheCash : (23 março 2019 - 16:34 GMT) :rolleyes:
@  Solk : (23 março 2019 - 16:04 GMT) :ph34r:
@  Mutano : (23 março 2019 - 13:56 GMT) @TheCash Sinto um cheiro de corno. Ah, é só tu ne man kkkkkk
@  Dr. Evil : (23 março 2019 - 11:31 GMT) @igort nao sei de onde ele tirou que eu estava sendo ironico '-'
@  TheCash : (23 março 2019 - 10:32 GMT) oiiiiiiii
@  igort : (23 março 2019 - 02:09 GMT) wtf n pareceu ironia msm
@  angaro192 : (22 março 2019 - 23:28 GMT) @Dr. Evil kkkkkkkkkkk até parece
@  Dr. Evil : (22 março 2019 - 23:27 GMT) eu nao fui ironico, eu queria mesmo ver o que voce tinha a dizer para discutir ideias, mas o que vc fez? kkkkk
@  angaro192 : (22 março 2019 - 23:25 GMT) quer tirar onda da minha cara, só retribuir a sua ironia.
@  Dr. Evil : (22 março 2019 - 23:24 GMT) faz 3 minutos que notei isso
@  angaro192 : (22 março 2019 - 23:24 GMT) k
@  angaro192 : (22 março 2019 - 23:24 GMT) @Dr. Evil nem todos "grandes dev" são adultos.
@  Dr. Evil : (22 março 2019 - 23:22 GMT) depois poe a culpa nos "grandes dev", vc mesmo é uma criança :p
@  angaro192 : (22 março 2019 - 23:21 GMT) _|_ "né que está mesmo".
@  angaro192 : (22 março 2019 - 23:21 GMT) @Dr. Evil deixa eu vê deve ta
@  Dr. Evil : (22 março 2019 - 23:20 GMT) eu queria ver o textão, ta no ctrl+v nao?
@  angaro192 : (22 março 2019 - 23:19 GMT) Digitei um textão, mais como lembrei que a area e repleta de "dev" que se acham os "grandes dev" mais o que adoram mesmo e uma confusão, então desistir de da minha opinião e deixei só meu like.
@  RageZone Bot : (22 março 2019 - 20:25 GMT) Novo tópico help guy's? postado em MuOnline por Lostt
@  Lime Serenity : (22 março 2019 - 19:29 GMT) cap? That seems familiar to me *that name
@  Lostt : (22 março 2019 - 17:00 GMT) haa blz vo baixar :D
@  Cabra Chapada : (22 março 2019 - 16:57 GMT) Lost baixa um programa chamado all in one q baixa todos os runtime, pode ser a falta deles o motivo de vc não estar conseguindo criar o servidor
@  Solk : (22 março 2019 - 16:54 GMT) '='
@  TheCash : (22 março 2019 - 16:54 GMT) :o
@  Lostt : (22 março 2019 - 16:53 GMT) ta ruim criar no w10 slk kkk
@  Cabra Chapada : (22 março 2019 - 16:53 GMT) Qual quer um, basta adaptar
@  TheCash : (22 março 2019 - 16:53 GMT) windows 98
@  rugal : (22 março 2019 - 16:53 GMT) ¬¬
@  Lostt : (22 março 2019 - 16:53 GMT) quais sistemas operacionais da para criar gc?
@  rugal : (22 março 2019 - 16:52 GMT) @Solk eu tbm uso windows 10 e roda de boa
@  Lostt : (22 março 2019 - 16:52 GMT) e em ubuntu?
@  Solk : (22 março 2019 - 16:51 GMT) @rugal cap e uns outros amigos meus usam o wind10 e tem servidor rodando
@  Solk : (22 março 2019 - 16:51 GMT) tard chars '=' https://youtu.be/lqbn02uKyjk
@  rugal : (22 março 2019 - 16:51 GMT) boa*
@  rugal : (22 março 2019 - 16:51 GMT) windows 97 roda de boao
@  rugal : (22 março 2019 - 16:50 GMT) nao
@  Solk : (22 março 2019 - 16:50 GMT) eu nunca tive exito no wind10 mas tem nego que consegui não sei como
@  Lostt : (22 março 2019 - 16:49 GMT) glr da pra criar server de gc em w10?
@  TheCash : (22 março 2019 - 16:44 GMT) pq? as files da s3 eu sempre tive, não gosto dela, vou usar chaos mesmo, beijos :*
@  Mutano : (22 março 2019 - 16:42 GMT) Vai tirar aquele Chaos e botar Season 3 de verdade. AGORA!
@  TheCash : (22 março 2019 - 16:41 GMT) OSHE
@  Mutano : (22 março 2019 - 16:41 GMT) @TheCash Coé corno

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
  • 132 posts
    • Tempo online: 19d 47m 42s

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
  • 132 posts
    • Tempo online: 19d 47m 42s

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
  • 198 posts
    • Tempo online: 35d 9h 25m 29s

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.531 posts
    • Tempo online: 189d 15h 50m 8s

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.531 posts
    • Tempo online: 189d 15h 50m 8s

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
  • 132 posts
    • Tempo online: 19d 47m 42s

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