A téma értékelése:
  • 1 szavazat - átlag 5
  • 1
  • 2
  • 3
  • 4
  • 5
Leírás Hardware ban
#1
Sziasztok.

Az alábbi kütyüvel "elvileg" végleg kitudtok tiltani felhasználókat a szerveretekről. Nem tudtam még kipróbálni így nem tudom mennyire működik a dolog de, egyik barátom kipróbálta és azt mondta működik.

Game forrás

packet.h

Keress rá erre:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Cseréld le erre:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]


db.cpp

Keress rá erre:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Add hozzá alatta:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Keress rá erre:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Add hozzá alatta:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]


Indító forrás


packet.h

Keres rá erre:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Cseréld le erre:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]


accountconnector.cpp

Add hozzá felül:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Keress rá erre:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Add hozzá alatta:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Keress rá erre:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Add hozzá alatta:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Keress rá erre:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Add hozzá alatta:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]


Python

root/intrologin.py

Keress rá erre:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Add hozzá alatta:
[Csak regisztrált felhasználók láthatják ezt a tartalmat.]


Adatbázisba táblák(Accounton belül hozzátok létre):

[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

[Csak regisztrált felhasználók láthatják ezt a tartalmat.]

Ha, nem működnek rendesen a táblák cseréljek le az InnoDB-t MyISAM-ra.

További szép napot.
Válaszol
#2
[quote pid='160' dateline='1490785208']
A végéről lemaradt a pontosvessző.

typedef struct command_login3
{
BYTE header;
char login[LOGIN_MAX_LEN + 1];
char passwd[PASSWD_MAX_LEN + 1];
DWORD adwClientKey[4];
char cHWInfo[255 + 1]; // HW INFO
} TPacketCGLogin3

[/quote]
EDIT: rossz volt a hwbanned, kiirta ugyan hogy bannolva, de továbbra is felengedte a játékost.
Fix:
if (LC_IsEurope())
{
//stBlockData >= 0 == łŻÂĄ°ˇ BlockDate ş¸´Ů ąĚ·ˇ 
if (strncmp(szCreateDate, g_stBlockDate.c_str(), 8) >= 0)
{
LoginFailure(d, "BLKLOGIN");
sys_log(0, "   BLKLOGIN");
M2_DELETE(pinfo);
break;
}

std::auto_ptr<SQLMsg> _hwid_msg(DBManager::instance().DirectQuery("SELECT hwid FROM account.banned_hwid_list"));
if (!_hwid_msg->uiSQLErrno) 
{
if (_hwid_msg->Get()->uiNumRows) {
while (MYSQL_ROW row_hwid = mysql_fetch_row(_hwid_msg->Get()->pSQLResult)) {
if (!strcmp(row_hwid[0], pinfo->cHWInfo)) {
LoginFailure(d, "HWBANNED");
sys_log(0, "   HWBANNED");
M2_DELETE(pinfo);
return;
}
}
}
}
char szQuery[1024];
snprintf(szQuery, sizeof(szQuery), "UPDATE account SET last_play=NOW() WHERE id=%u", dwID);
std::auto_ptr<SQLMsg> msg( DBManager::instance().DirectQuery(szQuery) );
char szHwid[255 * 2 + 1];
DBManager::instance().EscapeString(szHwid, sizeof(szHwid), pinfo->cHWInfo, strlen(pinfo->cHWInfo));

//std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery("INSERT INTO account.hwid_list (login, hwid) VALUES('%s', '%s')", pinfo->login, szHwid));
std::auto_ptr<SQLMsg> msg_ketto(DBManager::instance().DirectQuery("INSERT IGNORE INTO account.hwid_list SET login='%s', hwid='%s', date=NOW()", pinfo->login, szHwid));
}
Tesztelve működik!
Válaszol
#3
(2018-09-01, 10:47 AM)msmajda9 Írta: [Csak regisztrált felhasználók láthatják ezt a tartalmat.][quote pid='160' dateline='1490785208']
Noktalı virgül sonunda eksikti.

typedef struct command_login3
{
BYTE başlığı;
karakter girişi [LOGIN_MAX_LEN + 1];
karakter şifresi [PASSWD_MAX_LEN + 1];
DWORD adwClientKey [4];
char cHWInfo [255 + 1]; // HW INFO
} TPacketCGLogin3
EDIT : onu yasakladı rağmen hwbanned kötüydü, ama yine de bıraktı.
Sabit :
Eğer (LC_IsEurope ())
{
// stBlockData> = == 0 ° łŻÂĄ BlockDate ş¸'Ů Ae · 
(strncmp (szCreateDate, g_stBlockDate.c_str () 8)> = 0) ise
{
LoginFailure (d , "BLKLOGIN");
sys_log (0, "BLKLOGIN");
M2_DELETE (pinfo);
break;
}

std :: auto_ptr <SQLMsg> _hwid_msg (DBManager :: instance (). DirectQuery ("SELECT hwid FROM account.banned_hwid_list"));
if (! _hwid_msg-> uiSQLErrno) 
{
if (_hwid_msg-> Get () -> uiNumRows) {
while (MYSQL_ROW row_hwid = mysql_fetch_row (_hwid_msg-> Get () -> pSQLResult)) {
if (! strcmp (row_hwid [0], pinfo-> cHWInfo)) {
LoginFailure (d, "HWBANNED");
sys_log (0, "HWBANNED");
M2_DELETE (pinfo);
return;
}
}
}
}
char szQuery [1024];
snprintf (szQuery, sizeof (szQuery), "UPDATE hesabı SET last_play = NOW () NEREDE id =% u", dwID);
std :: auto_ptr <SQLMsg> msg (DBManager :: örnek (). DirectQuery (szQuery));
char szHwid [255 * 2 + 1];
DBManager :: instance (). EscapeString (szHwid, sizeof (szHwid), pinfo-> cHWInfo, strlen (pinfo-> cHWInfo));

// std :: auto_ptr <SQLMsg> msg (DBManager :: instance (). DirectQuery ("INT account.hwid_list (login, hwid) DEĞERLERİ ('% s', '% s')", pinfo-> login, szHwid));
std :: auto_ptr <SQLMsg> msg_ketto (DBManager :: instance (). DirectQuery ("IGNORE INTO account ekle.hwid_list SET girişi = '% s', hwid = '% s', tarih = ŞİMDİ ()", pinfo-> giriş, szHwid));
}
Test İşleri!
[/quote]

teşekkürler
WwW.MT2Master.NeT
[Kép: mt2master.png]
Válaszol


Fórumra ugrás:


Jelenlevő felhasználók ebben a témában: 1 Vendég