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