Metin2 P2P Açığını Kapatmak

Whistle

S İ N İ R L E N M E K
Site yetkilisi
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.569
Çözümler
551
Beğeni
12.267
Puan
5.915
Ticaret Puanı
2
Merhaba arkadaşlar,
Hala bazı paylaşılan fileslerde p2p açığı bulunuyor. Bunu nasıl kapatacağınızı anlatacağım. Kendim kullandığım ve başarılı bi koruma sağladığından dolayı paylaşıyorum.
Bunu yapmak için Metin2 kaynak kodlarınızın olması gerekecek.

game/desc_p2p.cpp dosyasını açın ve importların bulunduğu kısımı bunu ekleyin. (Sizde varsa eklemeyin)
C++:
#include "config.h"

Aratın;
C++:
    m_iMinInputBufferLen = 1024 * 1024;

Altına ekleyiniz;
C++:
    if (strcmp(host, g_szPublicIP))
    {
        sys_log(0, "SYSTEM: new p2p connection from [%s] to [%s] fd: %d BLOCKED", host, g_szPublicIP, m_sock);
        SetPhase(PHASE_CLOSE);
        return true;
    }


game/input.cpp açın ve aratın;
C++:
    if (bHeader == HEADER_CG_TEXT)
    {

Altına ekleyiniz;
C++:
        if (IsEmptyAdminPage() || !IsAdminPage(inet_ntoa(d->GetAddr().sin_addr))) // block if adminpage is not set or if not admin
        {
            sys_log(0, "SOCKET_CMD: BLOCK FROM(%s)", d->GetHostName());
            return -1;
        }

db/src/PeerBase.cpp açın ve aratın;
C++:
    if ((m_fd = socket_accept(fd_accept, &peer)) == INVALID_SOCKET)
    {
        Destroy();
        return false;
    }

Altına ekleyiniz;
C++:
    // refuse if remote host != localhost (only the same machine must be able to connect in here)
    std::string targetIP = inet_ntoa(peer.sin_addr);
    if (targetIP.rfind("127.0.0.1", 0) && targetIP.rfind("192.168.", 0) && targetIP.rfind("10.", 0))
    {
        sys_log(0, "BLOCK CONNECTION FROM %s", inet_ntoa(peer.sin_addr));
        Destroy();
        return false;
    }


Not: Bunları yaptıktan sonra bu konuda anlatılanları uygulayınız. Metin2 PvP Sunucu Güvenliği İçin Config Dosyasına Eklememiz Gerekenler

Açığın kapanıp kapanmadığını test etmek için ekteki dosyayı indirip deneyebilirsiniz. İyi çalışmalar dilerim.

Kaynaklar
Bu fixi yazan kişinin web sitesi:
Linkleri görebilmek için giriş yap veya kayıt ol.
 

Dosya Eklentileri

  • bash_epvp.rar
    200,5 KB · Gösterim: 290
Son düzenleme:
Yararlı bir paylaşım, teşekkür ederim. Bu fix sadece martysama için mi geçerli acaba ?
 
Hayır her sourceye yapabilirsiniz. Sadece bunu yazan kişi o. Kaynak kısmına ekledim her şeyi
 
Ekteki dosyayı indirip test edebilirsiniz yazışsınız fakat dosyayı göremedim
 
Dosyayı seneler önce indirmiştim. Orijinal paylaşan yerin linkini eklemek için arama yapıyordum ama bulamadım. O ara eklemeyi unutmuşum. Ekledim şimdi :D
 
Herhangi bir yerden p2p bağlantısı aracılığı ile serverin kanallarını kapatabilir, oyuncuya dc attırabilir, gm duyuru atılabilir, serverin event flaglarını değiştirebilir vs.

Genelde kanalları düşürmek için kullanıyorlar. Bu kodlarda dışarıdan gelen bağlantıları engelliyor. Sadece izin verilen ve sunucu içerisindeki bağlantılara izin veriyor. Ekte verdiğim script bu işe yarıyor. İndirip kendi serveriniz üzerinde deneyebilirsiniz. Eğer açık varsa başarılı bi şekilde kanalları kapatacaktır.
 
Herhangi bir yerden p2p bağlantısı aracılığı ile serverin kanallarını kapatabilir, oyuncuya dc attırabilir, gm duyuru atılabilir, serverin event flaglarını değiştirebilir vs.

Genelde kanalları düşürmek için kullanıyorlar. Bu kodlarda dışarıdan gelen bağlantıları engelliyor. Sadece izin verilen ve sunucu içerisindeki bağlantılara izin veriyor. Ekte verdiğim script bu işe yarıyor. İndirip kendi serveriniz üzerinde deneyebilirsiniz. Eğer açık varsa başarılı bi şekilde kanalları kapatacaktır.
hocam paylaştığınız bash.epvp.rar nasıl kullanılıyor kendi oyunumuz üzerinde ?
 
Geri
Üst