Tutorial for Hardware ID Ban by Yuri-BR
Solution RSUpdate > WOLoginHelper.cpp
Spoiler:
Search for:Add:PHP Code:#include "SteamHelper.h"
Search for:PHP Code:#include "HWInfo.h"
Add:PHP Code:SaveUserName();
Search for:PHP Code:LoadComputerToken();
Add:PHP Code:req.AddParam("password", passwd);
Search for:PHP Code:req.AddParam("computerid", hardwareid);
Add:PHP Code:bool CLoginHelper::LoadUserName()
{
// query for game registry node
HKEY hKey;
int hr;
hr = RegOpenKeyEx(HKEY_CURRENT_USER,
"Software\\Arktos Entertainment Group\\WarZ",
0,
KEY_ALL_ACCESS,
&hKey);
if(hr != ERROR_SUCCESS)
return true;
DWORD size = sizeof(username);
hr = RegQueryValueEx(hKey, "username", NULL, NULL, (BYTE*)username, &size);
RegCloseKey(hKey);
return true;
}
PHP Code:bool CLoginHelper::LoadComputerToken(){
HKEY hKey;
int hr;
hr = RegOpenKeyEx(HKEY_CURRENT_USER,
"Software\\House of Warrior Interactive\\WarZ",
0,
KEY_ALL_ACCESS,
&hKey);
if(hr != ERROR_SUCCESS)
{
CreateComputerToken();
return true;
}
DWORD size = sizeof(hardwareid);
hr = RegQueryValueEx(hKey, "hardwareid", NULL, NULL, (BYTE*)hardwareid, &size);
RegCloseKey(hKey);
return true;
}
void CLoginHelper::CreateComputerToken()
{
HKEY hKey;
int hr;
hr = RegCreateKeyEx(HKEY_CURRENT_USER,
"Software\\House of Warrior Interactive\\WarZ",
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hKey,
NULL);
if(hr == ERROR_SUCCESS)
{
CHWInfo g_HardwareInfo;
g_HardwareInfo.Grab();
sprintf(hardwareid, "0x%I64x", g_HardwareInfo.uniqueId); // Hardware ID By Yuri-BR
DWORD size = strlen(hardwareid) + 1;
hr = RegSetValueEx(hKey, "hardwareid", NULL, REG_SZ, (BYTE*)hardwareid, size);
RegCloseKey(hKey);
}
}
WOLoginHelper.h
Spoiler:
Search for:Add:PHP Code:char passwd[128];
Search for:PHP Code:char hardwareid[50];
Add:PHP Code:bool LoadUserName();
PHP Code:bool LoadComputerToken();
void CreateComputerToken();
Solution WZBackend-ASP.NET > api_login.aspx.cs
Spoiler:
Search for:Add:PHP Code:string password = web.Param("password");
Search for:PHP Code:string computerid = web.Param("computerid");
Add:PHP Code:sqcmd.Parameters.AddWithValue("@in_Password", password);
PHP Code:sqcmd.Parameters.AddWithValue("@in_HardwareID", computerid);
SQL Server 2008 > Run this script in the database
Spoiler:
HWID_LogHWID_BanPHP Code:USE [WarZ]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[HWID_Log](
[id] [int] IDENTITY(1,1) NOT NULL,
[CustomerID] [int] NOT NULL,
[ip] [nvarchar](50) NOT NULL,
[HardwareID] [nvarchar](50) NOT NULL,
[time] [datetime] NOT NULL,
CONSTRAINT [PK_LoginLog] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
PHP Code:USE [WarZ]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[HWID_Ban](
[HardwareID] [nvarchar](50) NOT NULL,
[Reason] [nvarchar](200) NOT NULL,
CONSTRAINT [PK_MacBan] PRIMARY KEY CLUSTERED
(
[HardwareID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Navicat > WarZ > dbo > function > WZ_ACCOUNT_LOGIN
Spoiler:
Search for:Add:PHP Code:@in_EMail varchar(100),
Search for:PHP Code:@in_HardwareID varchar(50),
Add:PHP Code:exec WZ_ACCOUNT_LOGIN_EXEC @in_IP,
PHP Code:@in_HardwareID,
WZ_ACCOUNT_LOGIN_EXEC
Spoiler:
Search for:Add:PHP Code:@in_IP varchar(100),
Search for:PHP Code:@in_HardwareID varchar(50),
Add:PHP Code:-- check if game is still active or 90sec passed from last update (COPYPASTE_GAMECHECK, search for others)
if(@GameServerId > 0 and DATEDIFF(second, [MENTION=1333422059]LASTGAME[/MENTION]date, GETDATE()) < 90) begin
select
0 as LoginResult,
[MENTION=25895]Custom[/MENTION]erID as CustomerID,
70 as AccountStatus, -- game still active code
0 as SessionID,
0 as IsDeveloper
return
end
Search for:PHP Code:-- Ban por Hardware ID by Yuri-BR
IF (EXISTS(SELECT * FROM HWID_Ban WHERE HardwareID = @in_HardwareID))
BEGIN
select
3 as LoginResult,
[MENTION=25895]Custom[/MENTION]erID as CustomerID,
200 as AccountStatus,
0 as SessionID,
0 as IsDeveloper
return
END
Add:PHP Code:INSERT INTO Logins
(CustomerID, LoginTime, IP, LoginSource)
VALUES
[MENTION=25895]Custom[/MENTION]erID, GETDATE(), @in_IP, 0)
PHP Code:-- Insert to HWID_Log
--if @in_HardwareID != ''
--begin
INSERT INTO HWID_Log (CustomerID, ip, HardwareID, time) VALUES [MENTION=25895]Custom[/MENTION]erID,@in_IP,@in_HardwareID,GETDATE())
--end
Add message for Ban Hardware ID and Fix
LauncherConfig.cpp
Spoiler:
Search for:Add:PHP Code:accountBannedMessage = r3dReadCFG_S(configFile, group, "accountBannedMessage",
"Your account has been permanently banned");
PHP Code:accountHWBannedMessage = r3dReadCFG_S(configFile, group, "accountHWBannedMessage",
"Your account has been banned by HardwareID");
LauncherConfig.h
Spoiler:
Search for:Add:PHP Code:std::string accountBannedMessage;
PHP Code:std::string accountHWBannedMessage;
In Updater.cpp
Spoiler:
Search for:Add:PHP Code:case CLoginHelper::ANS_Banned:
loginErrMsg_ = "Your account has been permanently banned";
MessageBox(NULL, gLauncherConfig.accountBannedMessage.c_str(), "Login", MB_OK | MB_ICONSTOP);
break;
PHP Code:case CLoginHelper::ANS_HWBanned:
loginErrMsg_ = "Your account has been banned by Hardware ID";
MessageBox(NULL, gLauncherConfig.accountHWBannedMessage.c_str(), "Login", MB_OK | MB_ICONSTOP);
break;
WOLoginHelper.cpp
Spoiler:
Search for:Add:PHP Code:else if(AccountStatus == 201)
loginAnswerCode = ANS_Frozen;
PHP Code:else if(AccountStatus == 202)
loginAnswerCode = ANS_HWBanned;
WOLoginHelper.h // Thanks for reminding me @DNC
Spoiler:
Search for:Add:PHP Code:ANS_Banned,
PHP Code:ANS_HWBanned,
Navicat > WarZ > dbo > function > WZ_ACCOUNT_LOGIN_EXEC
Spoiler:
Search for:Add:PHP Code:if [MENTION=1333383561]Accounts[/MENTION]tatus >= 200) begin
select
3 as LoginResult,
[MENTION=25895]Custom[/MENTION]erID as CustomerID,
[MENTION=1333383561]Accounts[/MENTION]tatus as AccountStatus,
0 as SessionID,
0 as IsDeveloper
return
end
Search for:PHP Code:if [MENTION=1333383561]Accounts[/MENTION]tatus >= 202) begin
select
3 as LoginResult,
[MENTION=25895]Custom[/MENTION]erID as CustomerID,
[MENTION=1333383561]Accounts[/MENTION]tatus as AccountStatus,
0 as SessionID,
0 as IsDeveloper
return
end
Replace for:PHP Code:-- Ban por Hardware ID by Yuri-BR
IF (EXISTS(SELECT * FROM HWID_Ban WHERE HardwareID = @in_HardwareID))
BEGIN
select
3 as LoginResult,
[MENTION=25895]Custom[/MENTION]erID as CustomerID,
200 as AccountStatus,
0 as SessionID,
0 as IsDeveloper
return
END
PHP Code:-- Ban por Hardware ID by Yuri-BR
IF (EXISTS(SELECT * FROM HWID_Ban WHERE HardwareID = @in_HardwareID))
BEGIN
update UsersData set AccountStatus=202 WHERE CustomerID [MENTION=25895]Custom[/MENTION]erID
select
3 as LoginResult,
[MENTION=25895]Custom[/MENTION]erID as CustomerID,
202 as AccountStatus,
0 as SessionID,
0 as IsDeveloper
return
END
To ban a player, you need to add the Hardware id of player in table HWID_Ban



Reply With Quote![[Tutorial] Ban for Hardware ID](http://ragezone.com/hyper728.png)



