- 17 Eyl 2023
- 1,349
- 23
- 623
Merhaba Değerli TurkHackTeam Ailesi, Bugün sizinle pythonda sunucu açma nasıl yapılır onu göreceğiz, Örnek proje olarak basit bir rat yazacağız
Sunucu açma nedir?, Ne işe yarar:
- Ağ tabanlı uygulamalar geliştirmek: Sunucu açma, ağ üzerindeki diğer cihazlarla iletişim kurmak için temel bir adımdır. Web sunucuları, dosya paylaşımı sunucuları ve oyun sunucuları gibi çeşitli ağ tabanlı uygulamalar bu temel üzerine inşa edilir.
- Veri paylaşımı: Bilgisayarınızı bir sunucu olarak kullanarak, diğer cihazlarla veri paylaşımı yapabilirsiniz. Dosyaları paylaşmak, veritabanı erişimi sağlamak veya sensör verilerini paylaşmak gibi işlevler bu kategoriye girer.
- Uzak erişim: Python sunucusu, bilgisayarınıza uzaktan erişim sağlayan çözümler için de kullanılabilir. Örneğin, uzaktan komut istemi hizmetleri veya uzak dosya yönetimi gibi işlevler sağlayabilir
Sunucu açmak için ne gerekli:
Python'da sunucu açmak oldukça kolaydır. Ancak, dış IP adresi üzerinden erişilebilir olması gerekiyorsa, modeminizde ilgili portun açık olması gerekmektedir. Bu, dış dünyadan gelen isteklerin doğru şekilde sunucunuza ulaşabilmesini sağlar.
Sunucu açma riskleri nelerdir:
- Güvenlik açıkları: Sunucu yazılımında veya konfigürasyonunda meydana gelebilecek güvenlik açıkları, kötü niyetli kişilerin sisteme izinsiz erişim kazanmasına veya hizmetleri kötüye kullanmasına olanak tanır.
- Kötü niyetli kullanım: Bir sunucu, kötü niyetli kişilerin hedefi olabilir. Örneğin, sunucuya saldırarak kişisel verileri çalmak, hizmetleri engellemek veya zararlı yazılım dağıtmak gibi kötü niyetli faaliyetlerde bulunabilirler.
- DDoS saldırıları: Hizmet reddi saldırıları (DDoS), bir sunucunun aşırı yük altında kalmasına ve hizmetlerinin kullanılamaz hale gelmesine neden olabilir. Bu tür saldırılar, sunucunun işlevselliğini aksatabilir ve kullanıcı deneyimini olumsuz etkileyebilir.
- Veri sızıntısı: Eğer sunucu üzerinde hassas veriler saklanıyorsa, güvenlik zafiyetleri veya yetki dışı erişimler sonucunda bu verilerin sızdırılması riski bulunmaktadır. Bu durum, hem kurumsal itibarın zarar görmesine hem de kullanıcıların güvenliğinin tehlikeye girmesine yol açabilir.
- Yasal sorumluluklar: Sunucu sahipleri, hizmetlerinin güvenliğini sağlamakla yükümlüdürler. Güvenlik ihlalleri veya veri sızıntıları durumunda yasal sorumluluklarla karşılaşabilirler. GDPR gibi düzenlemelere uyum sağlamak da önemlidir.
Socket Nedir?, Ne işe yarar:
Bilgisayar ağlarında iletişim kurmak için kullanılan bir arayüzdür. Temel olarak, iki bilgisayar arasında veri alışverişi yapmak için bir kanal sağlar. Bu kanal, iletişim kurmak isteyen cihazlar arasında veri göndermek ve almak için kullanılır.
Kodlama:
server.py
Python:
import socket
ip = '127.0.0.1' # ben local hostta çalıştırmak için bu IP verdim, siz buraya modem IP'nizi vermeniz gerekmekte
port = 8080 # ben burada 8080 portunu kullandım siz açtığınız portu yazmanız lazım
try:
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # burada ilk önce server diye değişken oluşturduk UDP protokolunu kullandım eğer sizin açtığınız port sadece tcp'yi
#destekliyor socket.socket.SOCK_STREAM yapabilirsiniz ama eğer ikisinide destekliyorsa ikisinide kullanabilirsiniz
server.bind(ip, port) # sunucu ayarı olarak ip ver portu verdik birleştirip oluşturduk
server.listen(3) # sunucu limiti
while True: # burada sonsuz döngü halinde sunucu bekliyor
client = server.accept() # eğer biri gelirse sunucuya kabul ediyor
print(f"{client} --> Girdi") # sunucunun ipsini alıyor
except socket.error as e:
print(f"")
Basit bir client yani istemci oluşturalım;
client.py
Python:
import socket
ip = '127.0.0.1' # bağlanmak istediğim IP
port = 8080 # bağlanmak istediğim Port
try:
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.connect(ip, port) #connect yani bağlantı ya IP ve Portumu veriyorum
print("Başarılı giriş") # giriş başarlı ise 'Başarılı giriş' yazdırır
server.close() # sunucudan kapatır yani çıkar
except:
print("Başarısız giriş") # giriş Başarısız ise 'Başarısız giriş' yazdırır
server.close()
Şimdi ise sunucu açalım client bağlanırsa client'inin şuanki hangi klasörde olduğunu yapalım:
server.py
server.py
Python:
import socket
ip = '127.0.0.1'
port = 8080
def server(ip='', port=0):
try:
adr = (ip, port)
sunucu = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # tcp sunucu açılıyor sizin açtığınız port UPD destekliyorsa 'SOCK_DGRAM' veya herikisini destekliyorsa sıkıntı olmaz
sunucu.bind(adr)
sunucu.listen(4)
print(f"Sunucu Açıldı... | IP: {ip}, Port: {port}")
while True:
client, adres = sunucu.accept()
print(f"{ip} --> Bu IP Sunucuya Girmiştir...\n")
data = client.recv(1024) # client veri gönderirse alır
print(data) # client'in verisini yazdırır
except socket.error as hata:
print(f"Hata: {hata}")
sunucu.close()
server(ip, port)
client.py
Python:
import socket
import os
ip = '127.0.0.1' # bağlanmak istediğim IP
port = 8080 # bağlanmak istediğim Port
try:
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.connect(ip, port) #connect yani bağlantı ya IP ve Portumu veriyorum
print("Başarılı giriş") # giriş başarlı ise 'Başarılı giriş' yazdırır
whoami = os.getcwd() # bu bilgisayarda hangi dosyadayız onu yazar
data = whoami.encode() # datayı encode yani şifreledik
server.send(data) # sunucuya gönderiyoruz
server.close() # sunucudan kapatır yani çıkar
except:
print("Başarısız giriş") # giriş Başarısız ise 'Başarısız giriş' yazdırır
server.close()