diff options
Diffstat (limited to 'csgo-loader/csgo-server/Login')
| -rw-r--r-- | csgo-loader/csgo-server/Login/RemoteLogin.cpp | 51 | ||||
| -rw-r--r-- | csgo-loader/csgo-server/Login/RemoteLogin.hpp | 14 |
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.
|
