Merhabalar,
Birsüredir kullandığım bir yöntemi sizinlede paylaşmak istedim. Bildiğiniz üzere sizin ip ve port değerlerinizin öğrenilebilmesini sağlayan bir yolda network monitorler bunlardan en basiti ise
"netstat -n" Peki nedir, Network monitor?
Ağınızdaki anlık veri trafiğini listeleyen ve dolayısıyla ip ve port adreslerinizinde tespit edilmesini sağlayan bir olay.
Peki neden engellemek gerekir?
Bilindiği üzere metin2'de sıkça karşılaşılan ddos saldırıları gibi bir durum söz konusu. Bazı lamerler başkalarının emeğini hiçe sayarak oyun bağlantısını zayıflatmak ve düşürmek amaçıyla sizin ip adresinize saldırılar yapıyor.
Diğer bir husus ise bilindiği üzere metin2'nin tüm dosyaları piyasada olduğu için herhangi başka bir client ile ip ve port adresleri değiştirilerek başarıyla sizin clientiniz haricinde bir client ile girmek mümkün bu gibi durumları engellemek için bu yöntemi uyguluyoruz.
Engelleme mantığı nedir?
Ne yazık ki network monitorler'den ip adresini ve port'u saklamak mümkün değil ancak bizde aynı portlara eşdeğer ve aynı binary üzerinden farklı bağlantılar yapar hedef şaşırtmak mümkün ve biz bu yöntemi kullanıcaz.
Gerekli şeyler;
-Python libleri(thread ve gerekli diğer libler)
-PyWinTypes(Syslog yazdırmak için gerekli modül)
-Biraz beyin
-Algoritma yapısını anlamak için biraz programlama
Öncelikle mantığını göstermek amacıyla kısa bir anlatım yapıcam.
İlk olarak gerekli modüller: "socket" ve "threading" modülü "Thread" fonksiyon
Şimdi modüllerimizi çağıralım
import socket
from threading import Thread
Daha sonra herhangi bir sorun yaşandığında bilgilendirmesi için log yazdırtalım
def syslog(s):
file = open('syserr.txt', 'a')
file.write('\n' + s + '\n')
file.close()Şimdi socket komutlarını bir veriable'ye atayarak uygulayalım
Socket komutlarımız
socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Herhangi bir hatada yukarıdaki fonksiyon ile log vermesini sağlamak amacıyla try-except'e bağlayalım
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except:
syslog('Socket Olusturma Basarisiz')Veriable değerlerini atamaya başlayalım
Örnek olarak tek ip ve 2 port için göstericem, verdiğim hazır scriptte önceden oluşturdum 15 ip ve 30 port mevcut.
"host = '46.21.54.86'" ile rastgele bir ip adresine host değerini atadık
"
port = 11002
port2 = 13000
"
Klasik auth ve game port adreslerimizide tekrar başka bir veriable'ye atadık.
Fonksiyonlarımızı oluşturalım
For döngüsü ile daha kısa şekilde oluşturabilirsiniz göstermek amacıyla, uzun ve ayrıntılı olarak göstericem.
def socket1():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
def socket2():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port2))
"socket1" fonksiyonu ile host ve port veriablesine yani "46.21.54.86" adresine ve "11002" portuna;
"socket2" fonksiyonu ile host ve port2 veriablesine yani "46.21.54.86" adresine ve "13000" portuna;
bağlantı oluşturduk.
Şimdi buraya kadar sıkıntı yok ancak bağlantıyı sabitlemek için thread ile bir süre açık bırakmak zorundayız.
i1p1 = Thread(target=socket1,args="")
i1p1 veriablesine gerekli thread komutunu atadık, socket1: fonksiyon ismi
Son olarak atadığımız i1p1 veriablesini başlatmak kaldı
i1p1.start()
komutu ile start veriyoruz ve işlem bitmiştir
Şimdi oluşturduğumuz scripti root.epk'yı açıp içine atıyoruz ve daha sonra "introselect.py" isimli script'i açıp oluşturduğumuz script'i çağırıyoruz.
Oluşacak görüntü:
15 ip ve 30 port hazır script: Tıkla İndir
Python 2.2: Tıkla İndir
Pywintypes modülü: Tıkla İndir
Virustotal:
https://www.virustotal.com/en/file/3...is/1396783567/ pasha37