summaryrefslogtreecommitdiff
path: root/csgo-loader/csgo-client/Login/RemoteLogin.cpp
diff options
context:
space:
mode:
authorboris <wzn@moneybot.cc>2018-12-19 00:13:24 +1300
committerboris <wzn@moneybot.cc>2018-12-19 00:13:24 +1300
commit77b52da44b263df4884be2f35f885d8edccbb6fa (patch)
tree54a9a07c67d507cb5120ae7e4ee86669dfec7c6b /csgo-loader/csgo-client/Login/RemoteLogin.cpp
parent1270999026bd77165edfffebfce277a34761710c (diff)
added new loader project :)
merry christmas
Diffstat (limited to 'csgo-loader/csgo-client/Login/RemoteLogin.cpp')
-rw-r--r--csgo-loader/csgo-client/Login/RemoteLogin.cpp75
1 files changed, 75 insertions, 0 deletions
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 <Login/RemoteLogin.hpp>
+#include <UserExperience/UserInterface.hpp>
+
+// 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<RemoteLoginResponse *>(&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