QPacket Encryption - zeroKilo/GROBackendWV GitHub Wiki

QPacket Encryption

Quazal uses RC4 Encryption for its DATA packets, the key is "CD&ML", so data can simply be decrypted like this:

data = Helper.Decrypt("CD&ML", data);

and encrypted like that:

data = Helper.Encrypt("CD&ML", data);

because doing the encryption twice with the same key returns the same input data (1x = encrypted, 2x = decrypted again)

Example Encryption Code

`

public static byte[] Encrypt(byte[] key, byte[] data)
{
	return EncryptOutput(key, data).ToArray();
}

public static byte[] Decrypt(byte[] key, byte[] data)
{
	return EncryptOutput(key, data).ToArray();
}

private static byte[] EncryptInitalize(byte[] key)
{
	byte[] s = Enumerable.Range(0, 256)
	  .Select(i => (byte)i)
	  .ToArray();
	for (int i = 0, j = 0; i < 256; i++)
	{
		j = (j + key[i % key.Length] + s[i]) & 255;

		Swap(s, i, j);
	}
	return s;
}

private static IEnumerable<byte> EncryptOutput(byte[] key, IEnumerable<byte> data)
{
	byte[] s = EncryptInitalize(key);
	int i = 0;
	int j = 0;
	return data.Select((b) =>
	{
		i = (i + 1) & 255;
		j = (j + s[i]) & 255;
		Swap(s, i, j);
		return (byte)(b ^ s[(s[i] + s[j]) & 255]);
	});
}

private static void Swap(byte[] s, int i, int j)
{
	byte c = s[i];
	s[i] = s[j];
	s[j] = c;
}`
⚠️ **GitHub.com Fallback** ⚠️