This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..
Question
KaL
I'm trying to make a tool which includes packet decryptation, however I'm stuck on decrypt results. My application gets KeyPacket and find the BF Key, then I use it with this formula:
public byte[] decryptRecv(byte[] raw, final int size) { if (!_isEnabled) return null; int temp = 0; for (int i = 0; i < size; i++) { int temp2 = raw[i] & 0xFF; raw[i] = (byte) (temp2 ^ _inKey[i&15] ^ temp); temp = temp2; } int old = _inKey[8] &0xff; old |= _inKey[9] << 8 &0xff00; old |= _inKey[10] << 0x10 &0xff0000; old |= _inKey[11] << 0x18 &0xff000000; old += size; _inKey[8] = (byte)(old &0xff); _inKey[9] = (byte)(old >> 0x08 &0xff); _inKey[10] = (byte)(old >> 0x10 &0xff); _inKey[11] = (byte)(old >> 0x18 &0xff); return raw; }This is the formula used by the emulators (gameserver part) but with the return of modified raw instead of void.
I checked if the hex key is fine, and it is.
Dunno if the conversion to byte is wrong, I'm using this:
public byte[] hexToBytes(String hex) { hex = hex.replaceAll(" ", ""); byte[] b = new BigInteger(hex, 16).toByteArray(); return b; }I'm comparing the decryptation results with PHX results. Once every 15 checks, it goes ok, but the others, some bytes are different from PHX.
For example:
RequestAuthLogin of PHX
Now, the same packet on my application:
Bold hex are different of PHX. Also, the differences are always at these bytes.
What am I doing wrong?
Thanks
0 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now