Flood/Kickhack Mantığı ile Oyuncunun Bağlantısını Kesme

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 38

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Ne kadar bilinip kullanıldığı belli olmamakla birlikte, bazı yabancı ülkelerde pek bilinen ve hala kullanılan bir açık.

Açığa gelecek olursak; herhangi bir karakterden /messenger_auth t Emre yazdığımızda Emre isimli karaktere flood gönderiyor.
Bazı kötü niyetli kişiler bot vb. araçlarla bu floodu çok daha fazla sayıda gönderebilirler.
forum.gif
Çözüm için aşağıdaki adımları uygulayınız:

game/src/messenger_manager.cpp açın ve arayın:
Kod:
void MessengerManager::AuthToAdd(MessengerManager::keyA account, MessengerManager::keyA companion, bool bDeny)

Fonksiyonu komple değiştirin:
Kod:
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; }

messenger_manager.h açın ve arayın:
Kod:
void    AuthToAdd(keyA account, keyA companion, bool bDeny);

Değiştirin:
Kod:
bool    AuthToAdd(keyA account, keyA companion, bool bDeny);

cmd_general.cpp açın ve arayın:
Kod:
ACMD(do_messenger_auth)

Komple değiştirin:
Kod:
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());     } }

Flood/KickHack Mantığı ile Oyuncunun Bağlantısını Kesme

Metin2 özel sunucularında güvenlik ve oyun dengesi açısından kritik öneme sahip olan Flood ve KickHack sistemleri, oyuncuların oyun içi deneyimini olumsuz etkileyebilecek kötü niyetli davranışları engellemek için tasarlanmıştır. Bu yazıda, Flood/KickHack mantığının nasıl çalıştığını ve bu tür saldırılar karşısında oyuncu bağlantısının nasıl kesileceğini detaylıca ele alacağız.

Flood Saldırısı Nedir?

Flood saldırısı, sunucuya aynı anda çok sayıda istek gönderilerek sistem kaynaklarının tükenmesine veya aşırı yüklenmesine neden olmaktır. Metin2 özel sunucularda bu, genellikle bir oyuncunun çok sayıda paket göndererek sunucuyu meşgul etmesiyle gerçekleşir. Örneğin, bir oyuncu sürekli olarak aynı komutu göndererek sunucu tarafında döngüye girmesine sebep olabilir. Bu da sunucunun diğer oyunculara hizmet verememesine yol açabilir.

KickHack Nedir?

KickHack, oyuncunun istemci tarafında değişiklik yaparak sunucuya zararlı paketler göndermesiyle bağlantının kesilmesini amaçlayan bir yöntemdir. Bazı KickHack teknikleri, sunucuda hata oluşmasına veya çökmesine neden olabilir. Bu tür saldırılar genellikle PvP sunucularında oyun dengesini bozmak veya belirli karakterleri oyun dışına atmak için kullanılır.

Sunucu Tarafında Flood/KickHack Tespiti

Metin2 özel sunucularda, Flood ve KickHack gibi saldırılar genellikle sunucu tarafında C++ kodları ile kontrol edilir. Game server üzerinde paketlerin sıklığı izlenebilir ve belirli bir eşiği geçen kullanıcılar otomatik olarak banlanabilir veya bağlantısı kesilebilir. Bu işlemler genellikle AuthServer ve GameServer arasında koordineli bir şekilde yapılır.

Örneğin, bir oyuncu saniyede 50'den fazla komut gönderiyorsa, bu bir Flood olarak tanımlanabilir ve bağlantı kesilebilir. Bu tür kontroller genellikle 'packet_log' dosyası üzerinden analiz edilerek yapılır. Ayrıca, bazı özel sistemler, belirli tipteki paketleri filtreleyip engelleyebilir.

Python ile Flood/KickHack Engelleme Sistemi

Metin2 geliştiricileri, Python dili ile yazılmış yardımcı sistemler sayesinde Flood/KickHack saldırılarını daha verimli bir şekilde tespit edebilirler. Python GUI tabanlı uygulamalarla sunucu logları gerçek zamanlı takip edilebilir ve anormal durumlar yakalandığında otomatik müdahale sağlanabilir.

PyRoot dizininde bulunan sistemlerle, paket analizi ve kullanıcı davranışları izlenebilir. Böylece, KickHack yapan kullanıcılar anında tespit edilip sunucudan atılabilir. Bu tür sistemler, PvP sunucularında oyun içi adil rekabeti korumak açısından hayati öneme sahiptir.

Bağlantı Kesme Yöntemleri

Sunucu tarafında Flood/KickHack tespiti yapıldığında, bağlantının kesilmesi için birkaç yöntem kullanılabilir:

- Sunucu tarafından kullanıcıya 'close_connection' komutu gönderilir.
- Belirlenen IP adresi geçici veya kalıcı olarak banlanır.
- Paket filtreleme sistemleri kullanılarak istemci ile iletişim kesilir.

Sonuç

Metin2 özel sunucularında Flood/KickHack saldırıları, oyun deneyimini ciddi şekilde etkileyebilir. Bu tür saldırıları engellemek için sunucu taraflı güçlü sistemlerin kurulması ve düzenli olarak logların incelenmesi gerekmektedir. C++, Python ve DB sistemleri entegre şekilde kullanıldığında, bu tür saldırılar etkin bir şekilde önlenebilir. Bu bağlamda, Metin2 geliştiricileri için güvenli ve adil bir PvP ortamı oluşturmak büyük önem taşır.


Disconnecting Player Connection via Flood/KickHack Logic

In Metin2 private servers, security and game balance are significantly impacted by Flood and KickHack systems, which are designed to prevent malicious behaviors that can negatively affect players' in-game experience. This article explores how Flood/KickHack logic works and explains methods for disconnecting player connections during such attacks.

What Is a Flood Attack?

A flood attack occurs when numerous requests are sent simultaneously to a server, causing resource exhaustion or excessive load. In Metin2 private servers, this often happens when a player sends multiple packets continuously, overwhelming the server. For instance, a player may repeatedly send the same command, creating a loop on the server side, which prevents the server from serving other players properly.

What Is KickHack?

KickHack involves sending harmful packets from the client-side to cause disconnection or even crash the server. These techniques aim to disrupt gameplay, especially in PvP servers, by targeting specific characters or destabilizing the overall environment. Such attacks can exploit vulnerabilities in the server's packet handling mechanism.

Detecting Flood/KickHack on the Server Side

In Metin2 private servers, Flood and KickHack attacks are usually detected through C++ code implementations on the game server. The frequency of packets sent by players is monitored, and users exceeding predefined thresholds can be automatically banned or disconnected. These operations are coordinated between the AuthServer and GameServer.

For example, if a player sends more than 50 commands per second, it can be classified as a Flood, resulting in immediate disconnection. Such checks are often analyzed through 'packet_log' files. Moreover, certain custom systems can filter and block specific types of packets.

Flood/KickHack Prevention with Python

Developers can efficiently detect Flood/KickHack attacks using Python-based auxiliary systems. With Python GUI applications, server logs can be monitored in real-time, allowing for automatic intervention upon detecting anomalies.

Systems located in PyRoot directories allow packet analysis and user behavior monitoring. This enables immediate identification and disconnection of KickHack users. Such systems are crucial for maintaining fair competition in PvP environments.

Methods for Disconnecting Connections

When Flood/KickHack is detected, several methods can be used to terminate the connection:

- The server sends a 'close_connection' command to the user.
- The identified IP address is temporarily or permanently banned.
- Packet filtering mechanisms cut off communication between the client and server.

Conclusion

Flood/KickHack attacks can severely impact the gaming experience in Metin2 private servers. To prevent such attacks, robust server-side systems must be implemented, and logs should be regularly reviewed. When C++, Python, and database systems are integrated effectively, these threats can be mitigated successfully. Ensuring a secure and fair PvP environment remains a top priority for Metin2 developers.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt