Bayramınız mübarek olsun!
input_logindir oyundan sorgudur gereği yok
3-4 satır ekleme ile exe ismini kontrol ettirebiliriz, bkz.
input_logindir oyundan sorgudur gereği yok
3-4 satır ekleme ile exe ismini kontrol ettirebiliriz, bkz.
Kod:
// Arat: if (!CMSWindow::Create(c_szName, 4, 0, WindowMode, ::LoadIcon( GetInstance(), MAKEINTRESOURCE( IDI_METIN2 ) ), IDC_CURSOR_NORMAL)) { //PyErr_SetString(PyExc_RuntimeError, "CMSWindow::Create failed"); TraceError("CMSWindow::Create failed"); SET_EXCEPTION(CREATE_WINDOW); return false; } // Altına ekle: char szAppPath[MAX_PATH] = ""; string strAppName; GetModuleFileName(NULL, szAppPath, MAX_PATH); strAppName = szAppPath; strAppName = strAppName.substr(strAppName.rfind("\\") + 1); if (strAppName != "metin2client.bin") { SET_EXCEPTION(USE_PATCHER); return false; }
Kod:
# Arat: if "CREATE_DEVICE" == msg: dbg.LogBox("Sorry, Your system does not support 3D graphics,\r\nplease check your hardware and system configeration\r\nthen try again.") else: dbg.LogBox("Metin2.%s" % msg) return # Değiştir: if "CREATE_DEVICE" == msg: dbg.LogBox("Sorry, Your system does not support 3D graphics,\r\nplease check your hardware and system configeration\r\nthen try again.") elif "USE_PATCHER" == msg: dbg.LogBox("Oyun dosyası hatalı!\r\nPatcher.exe'yi çalıştırıp güncelleme alın.") else: dbg.LogBox("Metin2.%s" % msg) return
Farklı isimli Client'den Girişi Engelleme Yöntemleri
Metin2 Private Server geliştirmelerinde güvenlik önlemleri oldukça kritiktir. Oyuncuların farklı isimlere sahip client'larla sunucuya erişmesi, hem hile riskini artırır hem de sunucu deneyimini bozabilir. Bu nedenle, sunucunuza özel isimlendirilmiş client dışındaki girişleri engellemek büyük önem taşır. Bu makalede, farklı isimli client girişlerini nasıl engelleyebileceğinizi detaylıca ele alacağız.
Client Adı Kontrolü Nedir?
Metin2 özel sunucularında, client tarafında belirlenen bir dosya veya exe adı üzerinden sunucuya bağlantı yapılır. Sunucu tarafında bu ismin doğrulanması, izin verilen client dışındaki bağlantıları reddetmek için kullanılır. Bu kontrol genellikle authserver veya game server[/COORD] üzerinde yapılır.
Python ve C++ ile Uygulama Yöntemleri
1. Authserver Tarafında Client Adı Doğrulaması
Authserver'a gelen bağlantıları kontrol ederek, doğru client adıyla bağlanılmadığında bağlantıyı sonlandırmak mümkündür. Bu işlem genellikle C++ ile yazılan sunucu kaynak kodlarında yapılır. Örneğin, client.exe yerine başka bir isimle giriş yapan kullanıcılar engellenebilir.
2. Python ile Client Doğrulama Sistemi
Sunucu tarafında Python tabanlı bir script kullanarak, gelen client adlarını filtreleyebilirsiniz. Özellikle Py Root üzerinde çalışan sistemlerde bu kontrol dinamik olarak yapılabilir. Örneğin, uiscript dosyası üzerinden client adı okunabilir ve karşılaştırılabilir.
Neden Farklı Client Adı Kullanımı Risklidir?
Oyuncuların kendi client'larını değiştirdiği durumlarda, modifiye edilmiş client'larla hile yapma ihtimali artar. Ayrıca, bazı client'lar sunucuya zarar verebilecek script'ler içerebilir. Bu nedenle, sadece tanıdığınız client adlarına izin vermek önemli bir güvenlik önlemidir.
Martysama gibi bilindik sistemlerde de client doğrulama mekanizmaları yer alır. Bu tür sistemlerin sağladığı yapılar sayesinde, client adı kontrolünü daha kolay entegre edebilirsiniz.
Sunucu Güvenliği İçin Ekstra Önlemler
Client adı kontrolü tek başına yeterli olmayabilir. Bu yüzden aşağıdaki adımları da göz önünde bulundurmanız önerilir:
- Checksum kontrolleri ile client'in orijinalliğini doğrulayın.
- Bağlantı sırasında client tarafından gönderilen header bilgilerini analiz edin.
- Pack[/BR] dosyalarının bütünlüğünü kontrol edin.
- Authserver loglarında şüpheli girişleri takip edin.
Sonuç
Sunucunuza özel client adı kontrolü, Metin2 özel sunucu geliştirme sürecinde alınması gereken temel güvenlik adımlarından biridir. C++ ve Python tabanlı sistemlerde bu kontrolü uygulamak, hem hile riskini azaltır hem de oyuncularınız için daha güvenli bir ortam sağlar. Bu yöntemleri doğru uygulayarak, Metin2 Lobby tarzı platformlarda daha kaliteli ve güvenli sunucular geliştirebilirsiniz.
How to Block Access from Different Named Clients
Security measures are critical in Metin2 Private Server developments. Players connecting to your server with differently named clients can increase cheating risks and negatively impact the server experience. Therefore, blocking connections from non-standard named clients is very important. In this article, we will cover in detail how to block access attempts from different named clients.
What is Client Name Verification?
In Metin2 private servers, connection to the server occurs through a specific file or executable name defined on the client side. Verifying this name on the server side allows rejecting connections that do not match allowed client names. This check is usually done on the authserver or game server.
Implementation Methods with Python and C++
1. Client Name Verification on Authserver
By checking incoming connections to the authserver, you can terminate connections that do not use the correct client name. This process is typically done within C++ based server source codes. For instance, users attempting to connect with a different name instead of client.exe can be blocked.
2. Client Validation System with Python
Using a script based on Python on the server side, you can filter incoming client names. Especially in systems running on Py Root, such checks can be performed dynamically. For example, the client name can be read and compared via the uiscript file.
Why Is Using Different Client Names Risky?
When players modify their own clients, the possibility of cheating increases significantly. Additionally, some modified clients may contain scripts harmful to the server. Therefore, allowing only known client names is an essential security measure.
Systems like Martysama include client validation mechanisms. Thanks to these structures, integrating client name verification becomes easier.
Additional Security Measures for Server Protection
Client name verification alone may not be sufficient. Therefore, it's recommended to also consider the following steps:
- Verify the originality of the client using checksum checks.
- Analyze header information sent by the client during connection.
- Check integrity of pack files.
- Monitor suspicious logins in authserver logs.
Conclusion
Client name verification tailored to your server is one of the fundamental security steps in Metin2 private server development. Implementing this control in C++ and Python based systems reduces cheating risks and provides a safer environment for your players. By applying these methods correctly, you can develop higher quality and more secure servers, similar to platforms like Metin2 Lobby.
