From a5acd4c9a3b24c9d5af3a8f504e5af053fa7fa09 Mon Sep 17 00:00:00 2001 From: boris Date: Thu, 20 Dec 2018 21:38:04 +1300 Subject: yo is this loss --- csgo-loader/csgo-server/Login/RemoteLogin.cpp | 51 ++++++++++++++++++++------- csgo-loader/csgo-server/Login/RemoteLogin.hpp | 14 +++++--- 2 files changed, 48 insertions(+), 17 deletions(-) (limited to 'csgo-loader/csgo-server/Login') diff --git a/csgo-loader/csgo-server/Login/RemoteLogin.cpp b/csgo-loader/csgo-server/Login/RemoteLogin.cpp index 880c072..b9ee44b 100644 --- a/csgo-loader/csgo-server/Login/RemoteLogin.cpp +++ b/csgo-loader/csgo-server/Login/RemoteLogin.cpp @@ -2,8 +2,10 @@ #define EXPECTED_CLIENT_HEADER 0xDEADBEEF -namespace Login { - bool RemoteLoginServer::Start(ByteArray &RawLoginHeader) { +namespace Login +{ + bool RemoteLoginServer::Start(ByteArray &RawLoginHeader) + { if(RawLoginHeader.empty()) return false; @@ -12,35 +14,60 @@ namespace Login { return true; } - RemoteLoginResponse RemoteLoginServer::GetLoginResponse() { + RemoteLoginResponse RemoteLoginServer::GetLoginResponse() + { // The header seems to be wrong, tell the client to update. if(m_Header.m_ClientHeader != EXPECTED_CLIENT_HEADER) return RemoteLoginResponse::OUTDATED_CLIENT; - // TODO: Check login, HWID, bans with websockets. + // TODO: Check if the user is banned. + //return RemoteLoginResponse::USER_BANNED; + + // TODO: Login the user. + if(strcmp(m_Header.m_Username, "betauser")) + return RemoteLoginResponse::INVALID_CREDENTIALS; + + if(strcmp(m_Header.m_Password, "betapassword")) + return RemoteLoginResponse::INVALID_CREDENTIALS; // User failed to obtain HWID? - if(!m_Header.m_HardwareId) { + if(!m_Header.m_HardwareId) + { // TODO: Shadow ban the user. - //return RemoteLoginResponse::INVALID_HARDWARE; + return RemoteLoginResponse::INVALID_HARDWARE; } + // TODO: Check if the HWID is present in DB. + if(false) + return RemoteLoginResponse::INVALID_HARDWARE; + + // TODO: Check if the user has a subscription. + if(false) + return RemoteLoginResponse::NO_SUBSCRIPTION; + + // Checksum validation. uint8_t Checksum = m_Header.m_IntegrityBit1 - | m_Header.m_IntegrityBit2 - | m_Header.m_IntegrityBit3; + | m_Header.m_IntegrityBit2 + | m_Header.m_IntegrityBit3; - if(Checksum || Checksum != m_Header.m_IntegrityBit4) { + if(Checksum || Checksum != m_Header.m_IntegrityBit4) + { // TODO: Shadow ban the user. + return RemoteLoginResponse::INTEGRITY_FAILURE; } - // Assume that they are authorised to use the cheat. - return RemoteLoginResponse::ACCESS_SPECIAL_USER; + // TODO: Check if they have beta access. + if(true) + return RemoteLoginResponse::ACCESS_SPECIAL_USER; + + return RemoteLoginResponse::ACCESS_AUTHORISED; } - ByteArray RemoteLoginServer::GetResponse() { + ByteArray RemoteLoginServer::GetResponse() + { // The way the server handles data transmission is homosexual. // That is the only reason this autism is here. ByteArray Response; diff --git a/csgo-loader/csgo-server/Login/RemoteLogin.hpp b/csgo-loader/csgo-server/Login/RemoteLogin.hpp index 36b7252..5b31db1 100644 --- a/csgo-loader/csgo-server/Login/RemoteLogin.hpp +++ b/csgo-loader/csgo-server/Login/RemoteLogin.hpp @@ -6,9 +6,11 @@ using ByteArray = std::vector; -namespace Login { +namespace Login +{ // Login header that is sent over to the server - struct RemoteLoginHeader { + struct RemoteLoginHeader + { // The first four bytes are encoded by the client. // This will carry the client version which can be checked. uint32_t m_ClientHeader; @@ -32,7 +34,8 @@ namespace Login { // Possible server responses // The hardware ID is encoded (XORed with the message ID) within the message for // shadow ban/forum ban purposes. :) - enum RemoteLoginResponse : uint8_t { + enum RemoteLoginResponse : uint8_t + { OUTDATED_CLIENT = 'A', // '[000A:{HWID}] Your client is outdated. Please download the latest client at 'moneybot.cc'.' ACCESS_AUTHORISED = 'B', // Allows the user to continue with injection. INVALID_CREDENTIALS = 'C', // '[000C:{HWID}] Your credentials are invalid. Please check your spelling and try again.' @@ -43,7 +46,8 @@ namespace Login { ACCESS_SPECIAL_USER = 'H', // Allows the user to continue, sets the m_SpecialAccess var }; // Implementation of the server (handles login bullshit). - class RemoteLoginServer { + class RemoteLoginServer + { RemoteLoginHeader m_Header; // Polls the server for data, responds with whether or not the client @@ -53,7 +57,7 @@ namespace Login { public: // Initialises the login header. bool Start(ByteArray &RawLoginHeader); - + ByteArray GetResponse(); // TODO: Implement shadow banning based on IP and HWID. -- cgit v1.2.3