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;using System.Threading.Tasks;namespace ServerProject.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",