static void AuthServer_OnClientReceive(byte[] buffer, int length, ClientWrapper arg3) { // CorrMLoader bool IsCorrM = false; int CorrM_BUF = 50; if (buffer[4] == CorrM_BUF) IsCorrM = true; else IsCorrM = false; buffer[4] = 144; var player = arg3.Connector as Client.AuthClient; player.Cryptographer.Decrypt(buffer, length); player.Queue.Enqueue(buffer, length); while (player.Queue.CanDequeue()) { byte[] packet = player.Queue.Dequeue(); ushort len = BitConverter.ToUInt16(packet, 0); ushort id = BitConverter.ToUInt16(packet, 2); if (len == 312) { player.Info = new Authentication(); player.Info.Deserialize(packet); player.Account = new AccountTable(player.Info.Username); msvcrt.msvcrt.srand(player.PasswordSeed); if (!LoginBruteForce.AcceptJoin(arg3.IP)) { Console.WriteLine("Client -> ", player.Info.Username, " was bloked Adrres ", arg3.IP, "!"); arg3.Disconnect(); break; } Database.ServerInfo Server = null; Forward Fw = new Forward(); if (ServerData.Servers.TryGetValue("Horror-Co", out Server)) { // CorrMLoader if (IsCorrM) { // It's Running With CorrMLoader !! :) if (!player.Account.exists) { Fw.Type = Forward.ForwardType.WrongAccount; player.Send(Fw); } if (player.Account.Password == player.Info.Password && player.Account.exists) { Fw.Type = Forward.ForwardType.Ready; } else { LoginBruteForce.ClientRegistred(arg3.IP); Fw.Type = Forward.ForwardType.InvalidInfo; } if (IPBan.IsBanned(arg3.IP) || player.Account.Banned) { Fw.Type = Forward.ForwardType.Banned; player.Send(Fw); return; } if (Fw.Type == Network.AuthPackets.Forward.ForwardType.Ready) { Client.GameState aClient; if (Kernel.GamePool.TryGetValue(Fw.Identifier, out aClient)) { Fw.Type = Forward.ForwardType.InvalidInfo; aClient.Disconnect(); player.Send(Fw); return; } Fw.Identifier = player.Account.GenerateKey(); Kernel.AwaitingPool[Fw.Identifier] = player.Account; Fw.IP = GameIP; Fw.Port = GamePort; Console.WriteLine("{0} has logged on Server: {1}! IP:[{2}] Country:[{3}]", player.Info.Username, player.Info.Server, player.IP, Kernel.Lookup.lookupCountryName(player.IP)); } player.Send(Fw); } else { // It's Not Running With CorrMLoader !! :( Fw.Type = Forward.ForwardType.WrongAccount; player.Send(Fw); } } } } }
static void AuthServer_OnClientReceive(byte[] buffer, int length, ClientWrapper arg3) { // CorrMLoader bool IsCorrM = false; int CorrM_BUF = 50; if (buffer[4] == CorrM_BUF) IsCorrM = true; else IsCorrM = false; buffer[4] = 144; var player = arg3.Connector as Client.AuthClient; player.Cryptographer.Decrypt(buffer, length); player.Queue.Enqueue(buffer, length); while (player.Queue.CanDequeue()) { byte[] packet = player.Queue.Dequeue(); ushort len = BitConverter.ToUInt16(packet, 0); ushort id = BitConverter.ToUInt16(packet, 2); if (len == 312) { player.Info = new Authentication(); player.Info.Deserialize(packet); player.Account = new AccountTable(player.Info.Username); msvcrt.msvcrt.srand(player.PasswordSeed); Forward Fw = new Forward(); // CorrMLoader if (IsCorrM) { // It's Running With CorrMLoader !! :) if (player.Account.Password == player.Info.Password && player.Account.exists) Fw.Type = Forward.ForwardType.Ready; else Fw.Type = Forward.ForwardType.InvalidInfo; if (IPBan.IsBanned(arg3.IP)) { Fw.Type = Forward.ForwardType.Banned; player.Send(Fw); return; } { if (Fw.Type == Network.AuthPackets.Forward.ForwardType.Ready) { Fw.Identifier = player.Account.GenerateKey(); Kernel.AwaitingPool[Fw.Identifier] = player.Account; Fw.IP = GameIP; Fw.Port = GamePort; } } player.Send(Fw); } else { // It's Not Running With CorrMLoader !! :( Fw.Type = Forward.ForwardType.InvalidInfo; player.Send(Fw); } } } }