using COServer.Network.Cryptography; using System; using System.IO; using System.Text;
namespace COServer.Network.AuthPackets {
public unsafe class Authentication : Interfaces.IPacket
{
public string Username;
public string Password;
public string Server;
public Authentication()
{
}
public void Deserialize(byte[] buffer)
{
if (buffer.Length == 312)
{
ushort length = BitConverter.ToUInt16(buffer, 0);
if (length == 312)
{
ushort type = BitConverter.ToUInt16(buffer, 2);
byte[] temp = new byte[16];
if (type == 1542)
{
MemoryStream MS = new MemoryStream(buffer);
BinaryReader BR = new BinaryReader(MS);
BR.ReadUInt16();
BR.ReadUInt16();
Username = Encoding.Default.GetString(BR.ReadBytes(32));
Username = Username.Replace("\0", "");
BR.ReadBytes(36);
var PasswordArray = BR.ReadBytes(32);
LoaderEncryption.Decrypt(PasswordArray, 32);
Password = Encoding.Default.GetString(PasswordArray);
Password = Password.Replace("\0", "");
BR.ReadBytes(32);
Server = Encoding.Default.GetString(BR.ReadBytes(32));
Server = Server.Replace("\0", "");
BR.Close();
MS.Close();
}
}
}
}
public byte[] ToArray()
{
throw new NotImplementedException();
}
public void Send(Client.GameState client)
{
throw new NotImplementedException();
}
}
}
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace COServer.Network.Cryptography {
public class LoaderEncryption
{
private static byte[] Key = { 180, 152, 187, 196, 231, 208, 204, 120, 177, 164, 184, 77, 9, 125, 114, 49, 9, 191, 20, 122, 9, 39, 123, 17, 115, 222, 188, 120, 109, 9, 65, 206, 85, 10, 29, 215, 143, 108, 231, 114 };
public static void Encrypt(byte[] arr)
{
int length = Key.Length;
for (int i = 0; i < arr.Length; i++)
{
arr[i] ^= Key[i % length];
arr[i] ^= Key[(i + 1) % length];
}
}
public static void Decrypt(byte[] arr, int size)
{
int length = Key.Length;
for (int i = 0; i < size; i++)
{
arr[i] ^= Key[(i + 1) % length];
arr[i] ^= Key[i % length];
}
}
}
}
GameCryptographyKey = "z1Sf34V7z6AV13uA",