summaryrefslogtreecommitdiff
path: root/csgo-loader/csgo-server/Login
diff options
context:
space:
mode:
authorboris <wzn@moneybot.cc>2018-12-20 21:38:04 +1300
committerboris <wzn@moneybot.cc>2018-12-20 21:38:04 +1300
commita5acd4c9a3b24c9d5af3a8f504e5af053fa7fa09 (patch)
tree27bc30d3f35e5daaaa15ee6de066119df8d352c7 /csgo-loader/csgo-server/Login
parent77b52da44b263df4884be2f35f885d8edccbb6fa (diff)
yo is this loss
Diffstat (limited to 'csgo-loader/csgo-server/Login')
-rw-r--r--csgo-loader/csgo-server/Login/RemoteLogin.cpp51
-rw-r--r--csgo-loader/csgo-server/Login/RemoteLogin.hpp14
2 files changed, 48 insertions, 17 deletions
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<uint8_t>;
-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.