HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
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)
Arat:
Altına ekle;
game/input.cpp açın ve aratın;
Altına ekle;
Burada size anlatacağım şey oyunun güvenliği için Config dosyalarına neler eklemeliyiz.
Konu içinde anlatacağım şeyleri channel1, channel2, channel3, channel4 ve game99 klasörlerinin içindeki CONFIG isimli dosyaya ekleyiniz.
1. İlk önce serveri test serverden çıkartmakla başlayalım. Eğer test server aktif ise gmlerin kullandığı bir çok komutları oyuncularda kullanacaktır.
2. P2P ile serverinize dışarıdan sızmaları engellemek için adminpage (metin2 api) şifresini değiştirmek ve ip atamak gerekiyor.
Gördüğünüz gibi 4 farklı ipyi atayabilirsiniz. Mesela web sitenizde p2p ile çalışan şey varsa web sitenizin ipsini ekleyebilirsiniz.
Örnek kullanım;
Not: PASSWORD kısmını değiştirmeyi unutmayın.
Şu şekilde de kullanımı mevcut;
Config tokenlerini öğrenmek için. Sourcenizde "game/src/config.cpp" dosyasını açarsanız hepsini görebilirsiniz.
3. Server key oluşturmak
Tam olarak ne işe yaradığını çözemedim lakin kodlara baktığımda bir çeşit lisans gibi bir şey. PUBLIC_IP değerine eklenen ipyi şifreleyerek bir key oluşturuyor. Eğer bu key config dosyasınıza atanmışsa ve PUBLIC_IP ipsi ile uyuşuyorsa server açılıyor. Aksi halde açılmıyor.
Kendi keyinizi oluşturmak için Metin2'nin vanilla sourcesinde "tools/ServerKeyGenerator" dosyasını kullanmanız gerekiyor. Daha sonra CONFIG dosyamıza bu keyi ekliyoruz.
Vanilla srcde tanımlanan örnek;
4. GM ip kontrolü
Bunun için gmlerinizin interneti sabit ip olmalı. Bunun şöyle bir güzel yanı var. Ola ki GM karakteri çalındı ve başka bilgisayardan girildi. Sistem ipyi farklı göreceği için GM yetkisini vermiyecektir.
Bunun için CONFIG dosyamıza şunu ekleyin;
İp kontrolünü kapatmak isterseniz 0 yapınız. Şöyle;
5. Server - Client bütünlüğünü sağlamak
Orijinal Metin2'ye eski clientle girmeye çalıştığınızda size versiyon hatası verir ve oyundan atar. Bizde bu özelliği aktif hale getireceğiz. Oyuncuların farklı client kullanarak oyuna bağlanmasını engellerseniz hem hilelerin önüne geçmiş olursunuz hemde server güvenliğini arttırmış olursunuz.
İlk önce Config dosyamıza ekleyeceğimiz kodun detaylarını öğrenelim.
CHECK_VERSION_SERVER: 0/1 devredışı bırakır. / Aktif eder.
CHECK_VERSION_VALUE: Clientte tanımlanan zaman damgası. Öğrenmek veya değiştirmek için: "ClientSrc/UserInterface/PythonNetworkStreamPhaseGame.cpp" dosyasını açıp şunu aratın;
Şuna benzer bir satır göreceksiniz;
Çift tırnak arasında yazılı olan sayı. O zaman build edildiğindeki timestamp değeridir. Bunu değiştirip kendi CONFIG dosyalarınza şunları ekleyin. Vanilla hali ile şöyle;
6. Bazı GM komutlarını engelleyin.
Olaki birisi serverinize p2p ile bağlandı veya birisi gm charınıza girdi. Oyunu test servere sokmaması için bazı kodları engelleyebilirsiniz. Bunun dışında bazı ch çökerten komutları da kapatabilirsiniz.
Yapımı;
filesinizin kanal klasörlerine (channel1, channel2, channel3, channel4 ve game99) girin için CMD diye bir dosya olacak. Onu açtığınızda şuna benzer bir şeyler göreceklersiniz.
Bu dosyada 2 sütun var. 1 sütuna kodun kendisini yazıyoruz. Aynı satırın 2. sütununa ise hangi gm rütbesinin kullanacağını yazıyorsunuz.
Örnek;
Fakat bunu yapmadan önce gm rütbelerini öğrenmeniz gerekiyor. Sırasıyla
Not: Normalde kodların hangi rütbede kullanılacağı. "serverSrc/game/src/cmd.cpp" dosyasında belirtilmiştir.
Örnek;
CMD dosyası kaynak kodlara müdahale etmeden tekrardan yetkilendirme içindir.
Resimde fark edeceksiniz. Bazı şeylerde DISABLE var.
Aynen öyle eğer kimsenin komutu kullanmasını istemiyorsanız DISABLE yaparak ekstra güvenlik önlemi alabilirsiniz. Dice komutunu da bu şekilde kapatabilirsiniz.
---------------------------------------------------------------------------------------
Evet arkadaşlar bildiğim her yöntemi size aktardım. Bunlar oyunun bizlere sunduğu güvenliği seçenekleri. DDOS gibi saldırıları önlemek için sunucuda ekstra güvenlik önlemleri almanız gerekiyor.
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)
Kod:
#include "config.h"
Arat:
Kod:
m_iMinInputBufferLen = 1024 * 1024;
Altına ekle;
Kod:
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;
Kod:
if (bHeader == HEADER_CG_TEXT)
{
Altına ekle;
Kod:
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;
}
Burada size anlatacağım şey oyunun güvenliği için Config dosyalarına neler eklemeliyiz.
Konu içinde anlatacağım şeyleri channel1, channel2, channel3, channel4 ve game99 klasörlerinin içindeki CONFIG isimli dosyaya ekleyiniz.
1. İlk önce serveri test serverden çıkartmakla başlayalım. Eğer test server aktif ise gmlerin kullandığı bir çok komutları oyuncularda kullanacaktır.
Kod:
TEST_SERVER = 0
2. P2P ile serverinize dışarıdan sızmaları engellemek için adminpage (metin2 api) şifresini değiştirmek ve ip atamak gerekiyor.
Kod:
ADMINPAGE_IP: ip1 ip2 ip3 ip4
ADMINPAGE_PASSWORD: parola
Gördüğünüz gibi 4 farklı ipyi atayabilirsiniz. Mesela web sitenizde p2p ile çalışan şey varsa web sitenizin ipsini ekleyebilirsiniz.
Örnek kullanım;
Kod:
ADMINPAGE_IP: 192.168.16.1 127.0.0.1 192.168.16.130 192.168.16.130
ADMINPAGE_PASSWORD: SHOWMETHEMONEY
Not: PASSWORD kısmını değiştirmeyi unutmayın.
Şu şekilde de kullanımı mevcut;
Kod:
adminpage_ip1: 192.168.16.1
adminpage_ip2: 127.0.0.1
Config tokenlerini öğrenmek için. Sourcenizde "game/src/config.cpp" dosyasını açarsanız hepsini görebilirsiniz.
3. Server key oluşturmak
Tam olarak ne işe yaradığını çözemedim lakin kodlara baktığımda bir çeşit lisans gibi bir şey. PUBLIC_IP değerine eklenen ipyi şifreleyerek bir key oluşturuyor. Eğer bu key config dosyasınıza atanmışsa ve PUBLIC_IP ipsi ile uyuşuyorsa server açılıyor. Aksi halde açılmıyor.
Kendi keyinizi oluşturmak için Metin2'nin vanilla sourcesinde "tools/ServerKeyGenerator" dosyasını kullanmanız gerekiyor. Daha sonra CONFIG dosyamıza bu keyi ekliyoruz.
Vanilla srcde tanımlanan örnek;
Kod:
SERVER_KEY: 05ZaBj/aGbMOABojQuwpzicUVsVkPLiTVMW15o85kjA2iVgR1VtmER1bchgAmqzZKaRq2ObVKcNeJgDbj6TOxjrQZlyuuyBJLQ3QskRVR64O0r+Wl290uPmAPe7KQUL1I0e4CMA2W/XRAZebjPjnDupQRlGIGveyvYI9zJNEwFQ*
4. GM ip kontrolü
Bunun için gmlerinizin interneti sabit ip olmalı. Bunun şöyle bir güzel yanı var. Ola ki GM karakteri çalındı ve başka bilgisayardan girildi. Sistem ipyi farklı göreceği için GM yetkisini vermiyecektir.
Bunun için CONFIG dosyamıza şunu ekleyin;
Kod:
GM_HOST_CHECK: 1
İp kontrolünü kapatmak isterseniz 0 yapınız. Şöyle;
Kod:
GM_HOST_CHECK: 0
5. Server - Client bütünlüğünü sağlamak
Orijinal Metin2'ye eski clientle girmeye çalıştığınızda size versiyon hatası verir ve oyundan atar. Bizde bu özelliği aktif hale getireceğiz. Oyuncuların farklı client kullanarak oyuna bağlanmasını engellerseniz hem hilelerin önüne geçmiş olursunuz hemde server güvenliğini arttırmış olursunuz.
İlk önce Config dosyamıza ekleyeceğimiz kodun detaylarını öğrenelim.
CHECK_VERSION_SERVER: 0/1 devredışı bırakır. / Aktif eder.
CHECK_VERSION_VALUE: Clientte tanımlanan zaman damgası. Öğrenmek veya değiştirmek için: "ClientSrc/UserInterface/PythonNetworkStreamPhaseGame.cpp" dosyasını açıp şunu aratın;
Kod:
bool CPythonNetworkStream::SendClientVersionPacket()
Şuna benzer bir satır göreceksiniz;
Kod:
strncpy(kVersionPacket.timestamp, "1215955205", sizeof(kVersionPacket.timestamp)-1); // # python time.time 앞자리
Çift tırnak arasında yazılı olan sayı. O zaman build edildiğindeki timestamp değeridir. Bunu değiştirip kendi CONFIG dosyalarınza şunları ekleyin. Vanilla hali ile şöyle;
Kod:
CHECK_VERSION_SERVER: 1
CHECK_VERSION_VALUE: 1215955205
6. Bazı GM komutlarını engelleyin.
Olaki birisi serverinize p2p ile bağlandı veya birisi gm charınıza girdi. Oyunu test servere sokmaması için bazı kodları engelleyebilirsiniz. Bunun dışında bazı ch çökerten komutları da kapatabilirsiniz.
Yapımı;
filesinizin kanal klasörlerine (channel1, channel2, channel3, channel4 ve game99) girin için CMD diye bir dosya olacak. Onu açtığınızda şuna benzer bir şeyler göreceklersiniz.
Bu dosyada 2 sütun var. 1 sütuna kodun kendisini yazıyoruz. Aynı satırın 2. sütununa ise hangi gm rütbesinin kullanacağını yazıyorsunuz.
Örnek;
Kod:
item IMPLEMENTOR
Fakat bunu yapmadan önce gm rütbelerini öğrenmeniz gerekiyor. Sırasıyla
- IMPLEMENTOR => En yüksek gm yetkisi.
- HIGH_WIZARD
- GOD
- LOW_WIZARD => En düşük gm yetkisi
- PLAYER => Oyuncu. Gm değil.
Not: Normalde kodların hangi rütbede kullanılacağı. "serverSrc/game/src/cmd.cpp" dosyasında belirtilmiştir.
Örnek;
Kod:
{ "who", do_who, 0, POS_DEAD, GM_IMPLEMENTOR },
CMD dosyası kaynak kodlara müdahale etmeden tekrardan yetkilendirme içindir.
Resimde fark edeceksiniz. Bazı şeylerde DISABLE var.
Kod:
test DISABLE
---------------------------------------------------------------------------------------
Evet arkadaşlar bildiğim her yöntemi size aktardım. Bunlar oyunun bizlere sunduğu güvenliği seçenekleri. DDOS gibi saldırıları önlemek için sunucuda ekstra güvenlik önlemleri almanız gerekiyor.
Son düzenleme:
yararlı paylaşım sabite alınmalı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)
Kod:#include "config.h"
Arat:
Kod:m_iMinInputBufferLen = 1024 * 1024;
Altına ekle;
Kod: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;
Kod:if (bHeader == HEADER_CG_TEXT) {
Altına ekle;
Kod: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; }
Burada size anlatacağım şey oyunun güvenliği için Config dosyalarına neler eklemeliyiz.
Konu içinde anlatacağım şeyleri channel1, channel2, channel3, channel4 ve game99 klasörlerinin içindeki CONFIG isimli dosyaya ekleyiniz.
1. İlk önce serveri test serverden çıkartmakla başlayalım. Eğer test server aktif ise gmlerin kullandığı bir çok komutları oyuncularda kullanacaktır.
Kod:TEST_SERVER = 0
2. P2P ile serverinize dışarıdan sızmaları engellemek için adminpage (metin2 api) şifresini değiştirmek ve ip atamak gerekiyor.
Kod:ADMINPAGE_IP: ip1 ip2 ip3 ip4 ADMINPAGE_PASSWORD: parola
Gördüğünüz gibi 4 farklı ipyi atayabilirsiniz. Mesela web sitenizde p2p ile çalışan şey varsa web sitenizin ipsini ekleyebilirsiniz.
Örnek kullanım;
Kod:ADMINPAGE_IP: 192.168.16.1 127.0.0.1 192.168.16.130 192.168.16.130 ADMINPAGE_PASSWORD: SHOWMETHEMONEY
Not: PASSWORD kısmını değiştirmeyi unutmayın.
Şu şekilde de kullanımı mevcut;
Kod:adminpage_ip1: 192.168.16.1 adminpage_ip2: 127.0.0.1
Config tokenlerini öğrenmek için. Sourcenizde "game/src/config.cpp" dosyasını açarsanız hepsini görebilirsiniz.
3. Server key oluşturmak
Tam olarak ne işe yaradığını çözemedim lakin kodlara baktığımda bir çeşit lisans gibi bir şey. PUBLIC_IP değerine eklenen ipyi şifreleyerek bir key oluşturuyor. Eğer bu key config dosyasınıza atanmışsa ve PUBLIC_IP ipsi ile uyuşuyorsa server açılıyor. Aksi halde açılmıyor.
Kendi keyinizi oluşturmak için Metin2'nin vanilla sourcesinde "tools/ServerKeyGenerator" dosyasını kullanmanız gerekiyor. Daha sonra CONFIG dosyamıza bu keyi ekliyoruz.
Vanilla srcde tanımlanan örnek;
Kod:SERVER_KEY: 05ZaBj/aGbMOABojQuwpzicUVsVkPLiTVMW15o85kjA2iVgR1VtmER1bchgAmqzZKaRq2ObVKcNeJgDbj6TOxjrQZlyuuyBJLQ3QskRVR64O0r+Wl290uPmAPe7KQUL1I0e4CMA2W/XRAZebjPjnDupQRlGIGveyvYI9zJNEwFQ*
4. GM ip kontrolü
Bunun için gmlerinizin interneti sabit ip olmalı. Bunun şöyle bir güzel yanı var. Ola ki GM karakteri çalındı ve başka bilgisayardan girildi. Sistem ipyi farklı göreceği için GM yetkisini vermiyecektir.
Bunun için CONFIG dosyamıza şunu ekleyin;
Kod:GM_HOST_CHECK: 1
İp kontrolünü kapatmak isterseniz 0 yapınız. Şöyle;
Kod:GM_HOST_CHECK: 0
5. Server - Client bütünlüğünü sağlamak
Orijinal Metin2'ye eski clientle girmeye çalıştığınızda size versiyon hatası verir ve oyundan atar. Bizde bu özelliği aktif hale getireceğiz. Oyuncuların farklı client kullanarak oyuna bağlanmasını engellerseniz hem hilelerin önüne geçmiş olursunuz hemde server güvenliğini arttırmış olursunuz.
İlk önce Config dosyamıza ekleyeceğimiz kodun detaylarını öğrenelim.
CHECK_VERSION_SERVER: 0/1 devredışı bırakır. / Aktif eder.
CHECK_VERSION_VALUE: Clientte tanımlanan zaman damgası. Öğrenmek veya değiştirmek için: "ClientSrc/UserInterface/PythonNetworkStreamPhaseGame.cpp" dosyasını açıp şunu aratın;
Kod:bool CPythonNetworkStream::SendClientVersionPacket()
Şuna benzer bir satır göreceksiniz;
Kod:strncpy(kVersionPacket.timestamp, "1215955205", sizeof(kVersionPacket.timestamp)-1); // # python time.time 앞자리
Çift tırnak arasında yazılı olan sayı. O zaman build edildiğindeki timestamp değeridir. Bunu değiştirip kendi CONFIG dosyalarınza şunları ekleyin. Vanilla hali ile şöyle;
Kod:CHECK_VERSION_SERVER: 1 CHECK_VERSION_VALUE: 1215955205
6. Bazı GM komutlarını engelleyin.
Olaki birisi serverinize p2p ile bağlandı veya birisi gm charınıza girdi. Oyunu test servere sokmaması için bazı kodları engelleyebilirsiniz. Bunun dışında bazı ch çökerten komutları da kapatabilirsiniz.
Yapımı;
filesinizin kanal klasörlerine (channel1, channel2, channel3, channel4 ve game99) girin için CMD diye bir dosya olacak. Onu açtığınızda şuna benzer bir şeyler göreceklersiniz.
Bu dosyada 2 sütun var. 1 sütuna kodun kendisini yazıyoruz. Aynı satırın 2. sütununa ise hangi gm rütbesinin kullanacağını yazıyorsunuz.
Örnek;
Kod:item IMPLEMENTOR
Fakat bunu yapmadan önce gm rütbelerini öğrenmeniz gerekiyor. Sırasıyla
- IMPLEMENTOR => En yüksek gm yetkisi.
- HIGH_WIZARD
- GOD
- LOW_WIZARD => En düşük gm yetkisi
- PLAYER => Oyuncu. Gm değil.
Not: Normalde kodların hangi rütbede kullanılacağı. "serverSrc/game/src/cmd.cpp" dosyasında belirtilmiştir.
Örnek;
Kod:{ "who", do_who, 0, POS_DEAD, GM_IMPLEMENTOR },
CMD dosyası kaynak kodlara müdahale etmeden tekrardan yetkilendirme içindir.
Resimde fark edeceksiniz. Bazı şeylerde DISABLE var.
Aynen öyle eğer kimsenin komutu kullanmasını istemiyorsanız DISABLE yaparak ekstra güvenlik önlemi alabilirsiniz. Dice komutunu da bu şekilde kapatabilirsiniz.Kod:test DISABLE
---------------------------------------------------------------------------------------
Evet arkadaşlar bildiğim her yöntemi size aktardım. Bunlar oyunun bizlere sunduğu güvenliği seçenekleri. DDOS gibi saldırıları önlemek için sunucuda ekstra güvenlik önlemleri almanız gerekiyor.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Sabit
- Anket
- Cevaplar
- 1K
- Görüntüleme
- 175K
- Cevaplar
- 25
- Görüntüleme
- 6K
Altın Konu
Metin2 Toplu Hata Düzenlemeleri
- Cevaplar
- 47
- Görüntüleme
- 9K
- Cevaplar
- 19
- Görüntüleme
- 3K
