Güzel soru, öncelikle A kişisi asd diye kayıtlı hwid ile asla ama asla giremez.A KİŞİSİ "B" ADLI ÇARIYLA HWİD LİSTESİNE "ASD" HWİDİ ile kayıt olur ve bi olaydan dolayı hwid ban yer
bu A KİŞİSİ BAŞKA PC DEN O HESABA GİRMEYE ÇALIŞTIĞINDA başka bi hwid üzerinden banı sorgulandığı için GİRMEYE ÇALIŞTIĞI PC NİN YENİ HWİD Adresi eskisiyle yer değiştirip yeni pc den o hesaba girmesi tekrar engelleniyormu ?
Yeni bir bilgisayar ile çarına girebilir. Girememesi için account ban da atmanız gerekir.
Hwid list de kayıtlı hwid değişir ancak eski biligsayarın hwid sabit kalır. Farkettiysen ban table da sadece hwid kayıtlı.
Güzel soru, öncelikle A kişisi asd diye kayıtlı hwid ile asla ama asla giremez.
Yeni bir bilgisayar ile çarına girebilir. Girememesi için account ban da atmanız gerekir.
Hwid list de kayıtlı hwid değişir ancak eski biligsayarın hwid sabit kalır. Farkettiysen ban table da sadece hwid kayıtlı.
extra bi ban olayı olmadan kişinin karakter hesap adına bağlı ban tablosundaki hwidinin otomatik replace olup yeni pc dende girememesi sağlanca güzel olurdu
toparlamak gerekirse sistem eklenince bi kişi binbirçeşit mac adresi ile oyuna girebilir kişi yasaklansa dahi sadece o anki mac adresi ban list girdisi olur sistem sadece ban tablosundaki mac adreslerinin girişlerini yasaklar bi multiple olupta yasaklanan oyuncunun karakter ismi maca bağlanırsa ozaman s*çar.
MAC BAN SYSTEM: ASD SENİN HWİD NEDİR GÜZELİM
ASD: AHA BU 1454545541(YANLIŞ MAC BAN VERDİM KEKOYA)
MAC BAN SYSTEM:MAC BANINA BAKILMAKSIZIN KARAKTER İSMİNİN MAC BAN LİSTESİNDE GİRDİSİ VAR DE S*KTR GİT LO OYUNDAN
sistem hwid banda mac adresi yerine kişinin ismine göre banlama yapsın herkez mutlu mesut yaşasın
MAC BAN SYSTEM: ASD SENİN HWİD NEDİR GÜZELİM
ASD: AHA BU 1454545541(YANLIŞ MAC BAN VERDİM KEKOYA)
MAC BAN SYSTEM:MAC BANINA BAKILMAKSIZIN KARAKTER İSMİNİN MAC BAN LİSTESİNDE GİRDİSİ VAR DE S*KTR GİT LO OYUNDAN
sistem hwid banda mac adresi yerine kişinin ismine göre banlama yapsın herkez mutlu mesut yaşasın

Son düzenleme:
Forumda olmadığını farkettim. Kurulumu basit, uygulaması pratik bir sistemdir.
HWID_List a düşen hwid'leri banned_hwid_list taşıdığınızı engellenir. IP ban gibi değildir. Modemin fişini çekmek fayda etmez
Game/src girelim
packet.h açın.
Aşşağıdakini aratın
Bu şekilde değiştirinKod:typedef struct command_login3 { BYTE header; char login[LOGIN_MAX_LEN + 1]; char passwd[PASSWD_MAX_LEN + 1]; DWORD adwClientKey[4]; } TPacketCGLogin3;
db.cpp açınKod: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
Aşşağıdakini aratın
Altına ekleyinKod:if (nPasswordDiff) { LoginFailure(d, "WRONGPWD"); sys_log(0, " WRONGPWD"); M2_DELETE(pinfo); }
Aşşağıdakini aratınKod:else if (!strcmp(szStatus, "HW_BAN")) { LoginFailure(d, "HWBANNED"); sys_log(0, " HWBANNED"); M2_DELETE(pinfo); }
Client source geçelimKod: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) ); Altına ekleyin 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(DBManager::instance().DirectQuery("INSERT IGNORE INTO account.hwid_list SET login='%s', hwid='%s', date=NOW()", pinfo->login, szHwid)); 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); } } } }
packet.h açın
Aşşağıdakini aratın
Bu şekilde değiştirinKod:typedef struct command_login3 { BYTE header; char name[ID_MAX_NUM + 1]; char pwd[PASS_MAX_NUM + 1]; DWORD adwClientKey[4]; } TPacketCGLogin3;
accountconnector.cpp açınKod:typedef struct command_login3 { BYTE header; char name[ID_MAX_NUM + 1]; char pwd[PASS_MAX_NUM + 1]; DWORD adwClientKey[4]; char cHWInfo[255 + 1]; // HW INFO } TPacketCGLogin3;
Aşşağıdaki kodu #include ların arasına ekleyin.
Aşşağıdakini aratınKod:#include <intrin.h> #include <Iphlpapi.h> #pragma comment(lib, "iphlpapi.lib")
Altına ekleyin.Kod:bool CAccountConnector::__AuthState_RecvEmpty() { BYTE byEmpty; Recv(sizeof(BYTE), &byEmpty); return true; }
Aşşağıdakini aratınKod:const char* GetMacAddress(){ PIP_ADAPTER_INFO AdapterInfo; DWORD dwBufLen = sizeof(AdapterInfo); char *mac_addr = (char*)malloc(17); AdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO)); if (!AdapterInfo) { //printf("Error allocating memory needed to call GetAdaptersinfo\n"); return ""; } // Make an initial call to GetAdaptersInfo to get the necessary size into the dwBufLen variable if (GetAdaptersInfo(AdapterInfo, &dwBufLen) == ERROR_BUFFER_OVERFLOW) { AdapterInfo = (IP_ADAPTER_INFO *)malloc(dwBufLen); if (!AdapterInfo) { //printf("Error allocating memory needed to call GetAdaptersinfo\n"); return ""; } } CHAR _MACFORMAT[] = { '%', '0', '2', 'X', ':', '%', '0', '2', 'X', ':', '%', '0', '2', 'X', ':', '%', '0', '2', 'X', ':', '%', '0', '2', 'X', ':', '%', '0', '2', 'X', 0x0 }; //"%02X:%02X:%02X:%02X:%02X:%02X" if (GetAdaptersInfo(AdapterInfo, &dwBufLen) == NO_ERROR) { PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;// Contains pointer to current adapter info do { sprintf(mac_addr, _MACFORMAT, pAdapterInfo->Address[0], pAdapterInfo->Address[1], pAdapterInfo->Address[2], pAdapterInfo->Address[3], pAdapterInfo->Address[4], pAdapterInfo->Address[5]); return mac_addr; pAdapterInfo = pAdapterInfo->Next; } while (pAdapterInfo); } free(AdapterInfo); }
Altına ekleyinKod:strncpy(LoginPacket.pwd, m_strPassword.c_str(), PASS_MAX_NUM);
Aşşağıdakini aratınKod:strncpy(LoginPacket.cHWInfo, GetMacAddress(), sizeof(LoginPacket.cHWInfo) - 1);
Altına ekleyinKod:LoginPacket.pwd[PASS_MAX_NUM] = '\0';
Root.eix-epk açın.Kod:LoginPacket.cHWInfo[255] = '\0';
root/intrologin.py girin
Aşşağıdakini aratın
Altına ekleyinKod:"AGELIMIT" : localeInfo.LOGIN_FAILURE_SHUTDOWN_TIME,
Mysql'de kayıt table açmak gerekiyor. Bu kodu query olarak okutun. Kod çalışmaz ise ENGINE ve CHARSET bölümünü database'in varsayılanına göre ayarlayın.Kod:"HWBANNED" : "Bu bilgisayardan erişim engellendi.",
Kod:SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS `hwid_list`; CREATE TABLE `hwid_list` ( `login` varchar(30) DEFAULT NULL, `hwid` varchar(255) NOT NULL DEFAULT '', `date` datetime DEFAULT NULL, PRIMARY KEY (`hwid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin5; SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS `banned_hwid_list`; CREATE TABLE `banned_hwid_list` ( `hwid` varchar(255) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin5;
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Anlatımda hata mı var ? bu kısımda ne yapacağız- Durum
- Üzgünüz bu konu cevaplar için kapatılmıştır...
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 13
- Görüntüleme
- 740
- Cevaplar
- 7
- Görüntüleme
- 429
- Cevaplar
- 12
- Görüntüleme
- 807
