Exemple #1
0
        public void Decrypt(Client client)
        {
            var length = Data.Length - 3;

            var bRand = (ushort)((Data[length + 2] << 8 | Data[length]) ^ 0x7470);
            var sRand = (byte)(Data[length + 1] ^ 0x23);

            var key = (UseDefaultKey) ? client.EncryptionKey : client.GenerateKey(bRand, sRand);

            for (var i = 0; i < length; i++)
            {
                Data[i] ^= key[i % key.Length];
                Data[i] ^= SaltTable[client.EncryptionSeed][(i / key.Length) % SaltTable[client.EncryptionSeed].Length];
                if ((i / key.Length) % SaltTable[client.EncryptionSeed].Length != Ordinal)
                {
                    Data[i] ^= SaltTable[client.EncryptionSeed][Ordinal];
                }
            }
        }
Exemple #2
0
        public void Encrypt(Client client)
        {
            var length = Data.Length - 3;

            var rand = new Random();
            //var bRand = (ushort)(rand.Next() % 65277 + 256);
            var bRand = (ushort)(rand.Next(65277) + 256);
            //var sRand = (byte)(rand.Next() % 155 + 100);
            var sRand = (byte)(rand.Next(155) + 100);

            byte[] key;
            switch (this.EncryptMethod)
            {
            case EncryptMethod.Normal:
                key = client.EncryptionKey;
                break;

            case EncryptMethod.MD5Key:
                key = client.GenerateKey(bRand, sRand);
                break;

            default:
                return;
            }

            //var key = (UseDefaultKey) ? client.EncryptionKey : client.GenerateKey(bRand, sRand);

            for (var i = 0; i < length; i++)
            {
                Data[i] ^= key[i % key.Length];
                Data[i] ^= SaltTable[client.EncryptionSeed][(i / key.Length) % SaltTable[client.EncryptionSeed].Length];
                if ((i / key.Length) % SaltTable[client.EncryptionSeed].Length != Ordinal)
                {
                    Data[i] ^= SaltTable[client.EncryptionSeed][Ordinal];
                }
            }

            Data[length]     = (byte)(bRand % 256 ^ 0x74);
            Data[length + 1] = (byte)(sRand ^ 0x24);
            Data[length + 2] = (byte)((bRand >> 8) % 256 ^ 0x64);
        }
Exemple #3
0
        public void Encrypt(Client client)
        {
            var length = Data.Length - 3;

            var rand  = new Random();
            var bRand = (ushort)(rand.Next() % 65277 + 256);
            var sRand = (byte)(rand.Next() % 155 + 100);

            var key = (UseDefaultKey) ? client.EncryptionKey : client.GenerateKey(bRand, sRand);

            for (var i = 0; i < length; i++)
            {
                Data[i] ^= key[i % key.Length];
                Data[i] ^= SaltTable[client.EncryptionSeed][(i / key.Length) % SaltTable[client.EncryptionSeed].Length];
                if ((i / key.Length) % SaltTable[client.EncryptionSeed].Length != Ordinal)
                {
                    Data[i] ^= SaltTable[client.EncryptionSeed][Ordinal];
                }
            }

            Data[length]     = (byte)(bRand % 256 ^ 0x74);
            Data[length + 1] = (byte)(sRand ^ 0x24);
            Data[length + 2] = (byte)((bRand >> 8) % 256 ^ 0x64);
        }
Exemple #4
0
        public void Encrypt(Client client)
        {
            var length = Data.Length - 3;

            var rand = new Random();
            var bRand = (ushort)(rand.Next() % 65277 + 256);
            var sRand = (byte)(rand.Next() % 155 + 100);

            var key = (UseDefaultKey) ? client.EncryptionKey : client.GenerateKey(bRand, sRand);

            for (var i = 0; i < length; i++)
            {
                Data[i] ^= key[i % key.Length];
                Data[i] ^= SaltTable[client.EncryptionSeed][(i / key.Length) % SaltTable[client.EncryptionSeed].Length];
                if ((i / key.Length) % SaltTable[client.EncryptionSeed].Length != Ordinal)
                {
                    Data[i] ^= SaltTable[client.EncryptionSeed][Ordinal];
                }
            }

            Data[length] = (byte)(bRand % 256 ^ 0x74);
            Data[length + 1] = (byte)(sRand ^ 0x24);
            Data[length + 2] = (byte)((bRand >> 8) % 256 ^ 0x64);
        }
Exemple #5
0
        public void Decrypt(Client client)
        {
            var length = Data.Length - 3;

            var bRand = (ushort)((Data[length + 2] << 8 | Data[length]) ^ 0x7470);
            var sRand = (byte)(Data[length + 1] ^ 0x23);

            var key = (UseDefaultKey) ? client.EncryptionKey : client.GenerateKey(bRand, sRand);

            for (var i = 0; i < length; i++)
            {
                Data[i] ^= key[i % key.Length];
                Data[i] ^= SaltTable[client.EncryptionSeed][(i / key.Length) % SaltTable[client.EncryptionSeed].Length];
                if ((i / key.Length) % SaltTable[client.EncryptionSeed].Length != Ordinal)
                {
                    Data[i] ^= SaltTable[client.EncryptionSeed][Ordinal];
                }
            }
        }