From 77b52da44b263df4884be2f35f885d8edccbb6fa Mon Sep 17 00:00:00 2001 From: boris Date: Wed, 19 Dec 2018 00:13:24 +1300 Subject: added new loader project :) merry christmas --- csgo-loader/csgo-client/Login/RemoteLogin.cpp | 75 +++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 csgo-loader/csgo-client/Login/RemoteLogin.cpp (limited to 'csgo-loader/csgo-client/Login/RemoteLogin.cpp') diff --git a/csgo-loader/csgo-client/Login/RemoteLogin.cpp b/csgo-loader/csgo-client/Login/RemoteLogin.cpp new file mode 100644 index 0000000..45f7953 --- /dev/null +++ b/csgo-loader/csgo-client/Login/RemoteLogin.cpp @@ -0,0 +1,75 @@ +#include +#include + +// Change this whenever a major client update is made. +// NOTE: You must change this on the server as well. +#define CURRENT_CLIENT_HEADER 0xDEADBEEF + +namespace Login { + void RemoteLoginTransaction::Start(const char *Username, const char *Password) { + // Initialise the header with the client header. + m_Header.m_ClientHeader = CURRENT_CLIENT_HEADER; + + // Initialise the header with the username and password. + strcpy_s< 128 >(m_Header.m_Username, Username); + strcpy_s< 128 >(m_Header.m_Password, Password); + + // Initialise the header with the Hardware ID. + m_Header.m_HardwareId = GetHardwareId(); + + // TODO: Verify integrity of system. + m_Header.m_IntegrityBit1 = 0; // 0 for integrity passed, random bit for failure + m_Header.m_IntegrityBit2 = 0; + m_Header.m_IntegrityBit3 = 0; + + // The checksum bit, the server will check this first to detect possible tampering. + m_Header.m_IntegrityBit4 = m_Header.m_IntegrityBit1 + | m_Header.m_IntegrityBit2 + | m_Header.m_IntegrityBit3; + } + + // TODO: Hardware ID check. + ByteArray RemoteLoginTransaction::DoWmiQuery(const char *Query) { + ByteArray Response{}; + + return Response; + } + + uint32_t RemoteLoginTransaction::GetHardwareId() { + return 123456789; + } + + bool RemoteLoginTransaction::TranslateResponse(ByteArray &RawResponse) { + RemoteLoginResponse ServerResponse = *reinterpret_cast(&RawResponse[0]); + + switch(ServerResponse) { + case RemoteLoginResponse::ACCESS_SPECIAL_USER: + // Allow the user to load special access cheats. + UserInterface->m_Data.m_SpecialAccess = true; + case RemoteLoginResponse::ACCESS_AUTHORISED: + return true; + case RemoteLoginResponse::OUTDATED_CLIENT: + INFO_ASSERT("[000A:%08x] Your client is outdated.\nPlease download the latest client at 'moneybot.cc'.", m_Header.m_HardwareId); + break; + case RemoteLoginResponse::INTEGRITY_FAILURE: + INFO_ASSERT("[000F:%08x] Failed to verify session.\nPlease contact an administrator.", m_Header.m_HardwareId); + break; + case RemoteLoginResponse::USER_BANNED: + INFO_ASSERT("[000D:%08x] Your account is banned.\nPlease contact 'admin@moneybot.cc' for additional information.", m_Header.m_HardwareId); + break; + case RemoteLoginResponse::INVALID_HARDWARE: + UserInterface->m_Data.m_Error = UserExperience::ERROR_INVALID_HWID; + //INFO_ASSERT("[000C:%08x] Hardware ID mismatch.\nPlease contact an administrator to request a hardware ID reset.", m_Header.m_HardwareId); + break; + case RemoteLoginResponse::INVALID_CREDENTIALS: + UserInterface->m_Data.m_Error = UserExperience::ERROR_SHADOW_BAN; + //INFO_ASSERT("[000C:%08x] Your credentials are invalid. Please check your spelling and try again.", m_Header.m_HardwareId ^ RemoteLoginResponse::INVALID_CREDENTIALS); + break; + case RemoteLoginResponse::NO_SUBSCRIPTION: + INFO_ASSERT("[000G:%08x] No active subscription found.", m_Header.m_HardwareId ^ RemoteLoginResponse::NO_SUBSCRIPTION); + break; + } + + return false; + } +} \ No newline at end of file -- cgit v1.2.3