Hi, i have work a little bit on this old client and i saw that packet were encrypt.
After some time i've find the way to decrypt them maybe you will find it interesting. ( but useless >< )
It's an easy encryption with each packet client and server send a key coded on a byte then after some modification you get a final key and client/server convert it using a encryption/desemcyption table.
Login packet struct :
<Packet ID> < First Key> <maybe crc > < login > < pass >
In this exemple i send to server login : gm001 pass : 11111
Next step, get the final key
you have to do two little operation on the key first do a logical and between First key and the hexadecimal value 0F next you shift bits two time to the left. (xD poor englis sorry)
example (first key <F6> )
Finaly add key value with each byte value of the packet to find the rank corresponding to your decrypted character.
DECRYPTED_CHAR = DECRYPT_TABLE [ FINAL_KEY + CRYPTED_CHAR_VALUE ]
In the attachment you will find an example programming in C language including the decrypt table from FirstLoginServer.
Certainly useless ... but i'm now working on the last Chinese client.
After some time i've find the way to decrypt them maybe you will find it interesting. ( but useless >< )
It's an easy encryption with each packet client and server send a key coded on a byte then after some modification you get a final key and client/server convert it using a encryption/desemcyption table.
Login packet struct :
Code:
<2F00> <F6> <2AED2C000001> <C1D66E6EF16A6A6A6A6A6A6A6A6A6A6A6A6A6A> <F1F1F1F1F1F16A6A6A6A6A6A6A6A6A6A6A6A6A>
<Packet ID> < First Key> <maybe crc > < login > < pass >
In this exemple i send to server login : gm001 pass : 11111
Next step, get the final key
you have to do two little operation on the key first do a logical and between First key and the hexadecimal value 0F next you shift bits two time to the left. (xD poor englis sorry)
example (first key <F6> )
Code:
asm :
mov var,F6h
and var,0Fh
; not sure of my asm code
C :
var = 0xF6;
var &= 0x0F;
var <<= 8;
Finaly add key value with each byte value of the packet to find the rank corresponding to your decrypted character.
DECRYPTED_CHAR = DECRYPT_TABLE [ FINAL_KEY + CRYPTED_CHAR_VALUE ]
In the attachment you will find an example programming in C language including the decrypt table from FirstLoginServer.
Certainly useless ... but i'm now working on the last Chinese client.
Attachments
You must be registered for see attachments list
Last edited: