Exploit Auth Metin2

01/13/2017 11:27 Wish3r#1
Open messenger_manager.cpp and search :
void MessengerManager::AuthToAdd(MessengerManager::keyA account, MessengerManager::keyA companion, bool bDeny)

Replace with :
bool MessengerManager::AuthToAdd(MessengerManager::keyA account, MessengerManager::keyA companion, bool bDeny)
{
DWORD dw1 = GetCRC32(companion.c_str(), companion.length());
DWORD dw2 = GetCRC32(account.c_str(), account.length());
char buf[64];
snprintf(buf, sizeof(buf), „%u:%u”, dw1, dw2);
DWORD dwComplex = GetCRC32(buf, strlen(buf));
if (m_set_requestToAdd.find(dwComplex) == m_set_requestToAdd.end())
{
sys_log(0, „MessengerManager::AuthToAdd : request not exist %s -> %s”, companion.c_str(), account.c_str());
return false;
}
m_set_requestToAdd.erase(dwComplex);
if (!bDeny)
{
AddToList(companion, account);
AddToList(account, companion);
}
return true;
}

Open cmd_general.cpp and search ACMD(do_messenger_auth)

Replace with :
ACMD(do_messenger_auth)
{
if (ch->GetArena())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(„대련장에서 사용하실 수 없습니다.”));
return;
}
char arg1[256], arg2[256];
two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));
if (!*arg1 || !*arg2)
return;
char answer = LOWER(*arg1);
bool bIsDenied = answer != ‘y’;
bool bIsAdded = MessengerManager::instance().AuthToAdd(ch->GetName(), arg2, bIsDenied); // DENY
if (bIsAdded && bIsDenied)
{
LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(arg2);
if (tch)
tch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(„%s 님으로 부터 친구 등록을 거부 당했습니다.”), ch->GetName());
}
}

Open messenger_manager.h and search :
void AuthToAdd(keyA account, keyA companion, bool bDeny);

Change in : bool AuthToAdd(keyA account, keyA companion, bool bDeny);
01/13/2017 15:58 Cyber36#2
Could you explain how the exploit works? So we could test, if we have this exploit in our source at the moment.

MfG
Cyber
01/27/2017 16:28 bluedrago#3
this is messenger exploit old?
01/28/2017 09:16 ThaRielFliege#4
Den Sinn von dem Exploit habe ich noch nicht wirklich verstanden, man kann Leuten damit aber sehr gut auf die Nerven gehen (/Messenger_Auth n name), ich hatte am Anfang gehofft das man mit /Messenger_Auth Y name denjenigen sofort ohne Anfrage in die FL machen kann, geht leider nicht.

Ich denke nicht das dieser Exploit etwas schwerwiegendes ist.
01/28/2017 09:36 Rainer Wahnsinn#5
Mithilfe dieses Exploits ist es möglich, andere Spieler zu kicken.

Ein Fix (oder auch mehrere), wurde(n) bereits vor gut zwei Jahren veröffentlicht.

Grüße
01/28/2017 09:38 ThaRielFliege#6
Quote:
Originally Posted by Rainer Wahnsinn View Post
Mithilfe dieses Exploits ist es möglich, andere Spieler zu kicken.

Ein Fix (oder auch mehrere), wurde(n) bereits vor gut zwei Jahren veröffentlicht.

Grüße
Vermutlich auf die selbe Art und Weise wie mit dem PM Flooder, oder nicht?
01/28/2017 09:58 Rainer Wahnsinn#7
Ähnlich, ja. Bei dem PM flooder werden zu viele Nachrichten in zu kurzem Abstand geschickt,
bis der Client abstürzt, bzw. ein Kick hervorgerufen wird.

So wie ich das verstanden habe, nutzt dieser Exploit hier das Verweigern einer Freundes-Einladung.
01/28/2017 10:33 ThaRielFliege#8
Ja genau, das habe ich aber schon auf meinem Test Server ausprobiert. Im Client eingebaut das man mit dem Klick auf den jeweiligen Spieler durchgehend das Command schickt. Wird zwar vollgespammt, aber nen Kick gab es keinen.

Kriegt halt andauernd dann "XYZ hat deine Einladung abgelehnt".
01/30/2017 14:29 CHXENVS#9
Danke für's Teilen, aber wie es schon erwähnt wurde, wurde solch ein Fix doch schon einmal gepubed.

Ich würde es auch eher als Bug-Fix einstufen, da man Leute nicht damit kicken kann. Vielleicht kann es unter Umständen bei bestimmten Clients zu einem Kick kommen.