C++ Karakter Seçiminde PlayerID Denetimi.

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Karakter seçim ekranında seçilmiş olan karakterin player id'sinin olup olmadığını kontrol edelim.

input_login.cpp Aç:

Kod:
void CInputLogin::CharacterSelect(LPDESC d, const char* data)

Kod:
if (c_r.players[pinfo->index].bChangeName)     {         sys_err("name must be changed idx %d, login %s, name %s", pinfo->index, c_r.login, c_r.players[pinfo->index].szName);         return;     }

Kod:
if (!c_r.players[pinfo->index].dwID) {         sys_err("PlayerSelect %s oyuncunun playerID si yok.", c_r.login);         d->SetPhase(PHASE_CLOSE);         return;     }

Örnek:

d367bdda35d97bcf1ed1f3ebb5bdb7b1.gif

C++ Karakter Seçiminde PlayerID Denetimi Nedir?
Metin2 özel sunucu geliştirme süreçlerinde, güvenlik ve veri bütünlüğü en önemli konulardan biridir. Bu bağlamda, C++ tabanlı sistemlerde karakter seçim ekranında PlayerID denetimi yapılması, sunucu tarafında oluşabilecek hataları ve dolandırıcılık girişimlerini engellemek açısından kritik öneme sahiptir.

Neden PlayerID Denetimi Yapılır?
Metin2 özel sunucularında oyuncular bir karakter seçerken, sunucu tarafında bu karakterin kim olduğuna dair doğrulama işlemi yapılır. Ancak bazı durumlarda, istemci tarafında yapılan değişiklikler veya kötü niyetli kullanıcılar tarafından gönderilen sahte veriler, karakter kimliklerinin değiştirilmesine veya yetkisiz erişimlere neden olabilir. Bu gibi durumları engellemek için PlayerID doğrulaması yapılır. Bu doğrulama sayesinde sunucu, istemcinin gerçekten o karaktere erişim hakkı olup olmadığını kontrol eder.

PlayerID Doğrulama Süreci Nasıl Gerçekleştirilir?
C++ dilinde yazılmış bir Metin2 sunucu kaynağı üzerinde, karakter seçim aşamasında client_packet.cpp dosyasında gelen paketler incelenir. Oyuncu bir karakter seçtiğinde, istemci tarafından SELECT_CHARACTER paketi gönderilir. Bu paket içerisinde, oyuncunun seçtiği karakterin ID bilgisi yer alır. Sunucu bu ID değerini, oturumda kayıtlı olan oyuncunun karakterlerine karşılaştırır.

Denetim İçin Gerekli Kod Yapısı
Kodlama seviyesinde, öncelikle player_id değeri alınır ve daha sonra GetPlayerID() fonksiyonuyla sunucudaki oyuncunun gerçek kimliğiyle karşılaştırılır. Eğer iki ID uyuşmuyorsa, bağlantı güvenliği açısından kesilmelidir. Bu işlem sırasında loglama yapılarak herhangi bir saldırgan davranış tespit edilebilir.

Sunucu Tarafında Güvenlik Önlemleri
PlayerID denetimi sadece karakter seçiminde değil, hareketler, öğe kullanımı ve sohbet gibi diğer tüm işlemlerde de yapılmalıdır. Ancak özellikle karakter seçim anı kritik bir noktadır çünkü burada sahte bir karakterin yüklenmesi sunucuda büyük sorunlara yol açabilir. Bu nedenle her pakette mutlaka oturum doğrulaması yapılmalıdır.

Özel Sunucularda PlayerID Güvenliği
Metin2 özel sunucularında, genellikle game core ve db core yapıları üzerinde çalışılır. Bu yapılar üzerinden PlayerID doğrulamasının entegrasyonu sağlanmalıdır. Özellikle DB bağlantısı sırasında karakter bilgileri kontrol edilmeli ve sunucu tarafında her karakterin oyuncuya özel olup olmadığı teyit edilmelidir.

Sonuç
C++ tabanlı Metin2 özel sunucularında karakter seçim ekranında PlayerID denetimi yapmak, güvenlik açıklarını kapatmak ve veri bütünlüğünü sağlamak açısından hayati önem taşır. Geliştiricilerin bu denetimi doğru ve eksiksiz bir şekilde uygulaması, sunucunun uzun süreli çalışmasında büyük rol oynar.


What is PlayerID Verification During Character Selection in C++?
In the process of developing Metin2 private servers, security and data integrity are among the most important topics. In this context, performing PlayerID verification during character selection in C++-based systems is crucial for preventing errors and fraudulent activities on the server side.

Why Perform PlayerID Verification?
In Metin2 private servers, when players select a character, the server verifies the identity of that character. However, in some cases, modifications made on the client side or fake data sent by malicious users can lead to character identity changes or unauthorized access. To prevent such scenarios, PlayerID validation is performed. This validation allows the server to check whether the client truly has access rights to the selected character.

How is the PlayerID Validation Process Implemented?
In a C++ coded Metin2 server source, the incoming packets are examined within the client_packet.cpp file during character selection. When a player selects a character, the client sends the SELECT_CHARACTER packet. Within this packet lies the ID information of the selected character. The server compares this ID value against the characters registered under the active session of the player.

Code Structure Required for Verification
At the code level, the player_id value is first retrieved, then compared with the actual identity of the player on the server via the GetPlayerID() function. If the two IDs do not match, the connection should be severed for security reasons. Logging can be implemented during this process to detect any malicious behavior.

Server-Side Security Measures
PlayerID verification should not only occur during character selection but also in other operations like movement, item usage, and chat. However, character selection is particularly critical since loading a fake character at this stage could cause major issues on the server. Therefore, session validation must be performed in every packet.

PlayerID Security in Private Servers
In Metin2 private servers, structures like game core and db core are commonly worked upon. Integration of PlayerID verification must be ensured through these structures. Especially during DB connections, character data must be checked and verified to ensure that each character belongs exclusively to the correct player on the server side.

Conclusion
Implementing PlayerID verification during character selection in C++ based Metin2 private servers is vital for closing security gaps and ensuring data integrity. Developers implementing this verification correctly and thoroughly contribute significantly to the long-term stability of the server.
 

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

Benzer konular

Geri
Üst Alt