Jump to content

Most Wanted Server?  

278 members have voted

  1. 1. Most Wanted Server?

    • StackSub x1 - x10
      6
    • StackSub x15 - x35
      26
    • StackSub x100 - x300
      7
    • StackSub x500 - x1000
      22
    • Normal x1 - x10
      36
    • Normal x15 - x35
      71
    • Normal x100 - x300
      50
    • Normal x500 - x1000
      60


Recommended Posts

  • 2 weeks later...
  • 1 month later...
Posted

Normal x35, stack Subclass is borring, peopla are makeing chars only for the biggest casting speed or bows.

Of course Gracia Final or Epilogue, older chronicles like C4, C5 and Interlude are just old, boring and bugged as hell.

Posted

Norma x100-x300 reason?

Not too easy not too difficult, it's perfect for people who just wanna have fun and can't spend all day in playing l2 :P

Guest
This topic is now closed to further replies.



  • Posts

    • I open the l2j server and see 1. XOR->NewCrypt.encXORPass(raw, offset, size, Rnd.nextInt()); ---> xor everything is clear 2. _staticCrypt.crypt(raw, offset, size); -----> private void encryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) { int xl = bytesTo32bits(src, srcIndex); int xr = bytesTo32bits(src, srcIndex + 4); xl ^= P[0]; for (int i = 1; i < ROUNDS; i += 2) { xr ^= func(xl) ^ P[i]; xl ^= func(xr) ^ P[i + 1]; } xr ^= P[ROUNDS + 1]; bits32ToBytes(xr, dst, dstIndex); bits32ToBytes(xl, dst, dstIndex + 4); }   I scroll down the code and see this code   ----->>> /**      * Decrypt the given input starting at the given offset and place the result in the provided buffer starting at the given offset. The input will be an exact multiple of our blocksize.      * @param src      * @param srcIndex      * @param dst      * @param dstIndex      */     private void decryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)     {         int xl = bytesTo32bits(src, srcIndex);         int xr = bytesTo32bits(src, srcIndex + 4);         xl ^= P[ROUNDS + 1];         for (int i = ROUNDS; i > 0; i -= 2)         {             xr ^= func(xl) ^ P[i];             xl ^= func(xr) ^ P[i - 1];         }         xr ^= P[0];         bits32ToBytes(xr, dst, dstIndex);         bits32ToBytes(xl, dst, dstIndex + 4);     }   ===================================================   I'm transferring this code to C# private void decryptBlock(byte[] src, uint srcIndex, byte[] dst, uint dstIndex)    {        uint xl = BytesTo32bits(src, srcIndex);        uint xr = BytesTo32bits(src, srcIndex + 4);        xl ^= P[ROUNDS + 1];        for (int i = ROUNDS; i > 0; i -= 2)        {            xr ^= F(xl) ^ P[i];            xl ^= F(xr) ^ P[i - 1];        }        xr ^= P[0];        Bits32ToBytes(xr, dst, dstIndex);        Bits32ToBytes(xl, dst, dstIndex + 4);    }   And in c# I first do decryptBlock and then XOR and everything works, I get the package and the first 2 bytes have already been removed as far as I remember   This only works for the login server for the game server, I think it’s not much different  
    • Ask him what you know, and what I know hahaha.
    • https://prnt.sc/2G_hOHfUIGLM   not sure what you mean Teddy boi  
    • Hello first of all thank you for your prompt response and the time you are taking to read this and answer, I am aware that not everyone takes the time and for that I thank you. On the other hand the specific problem is when decrypting this package and being able to parse it,  In some places it says that it is only encrypted with xor, in others that only a static blowfish is used and in others that both are used in the order of xor and then blowfish, this is the problem in spite of being able to see the encryption mechanisms of the servers, I can not put together the function that reverses this encryption to obtain the keys sent by the init packet.   Thanks for your time, hopefully the rest can contribute something because it is a super useful module to extend any functionality to the client and I will publish it in an opensource way when it is finished.
  • Topics

×
×
  • Create New...