Merhaba arkadaşlar,

Bugün sizlerle tamamen sıfırdan, Python kullanarak basit ama etkili bir port tarama aracı yapacağız. Bu araç sayesinde belirlediğiniz IP adresindeki açık portları hızlıca tespit edebilir, hangi servislerin çalıştığını görebilirsiniz.

Neden port tarama?
Port tarama, ağ güvenliği ve ön bilgi toplama aşamalarında çok kritik bir adımdır. Açık portlar genellikle sistemde çalışan servislerin kapılarını temsil eder ve saldırganlar için potansiyel zayıflıklardır.

Not: Bu araç sadece eğitim ve ağ yöneticilerinin kendi sistemlerinde kullanımı içindir

Araçta neler var?

Çoklu thread kullanarak hızlı tarama

Portun açık olup olmadığını kontrol etme

Açık portlarda standart servis isimlerini görme (örneğin HTTP, FTP vb.)

Kullanımı kolay, komut satırı üzerinden çalıştırma

Python Port Scanner Kullanım Rehberi


---

1. Kod Dosyasını Kaydet:
Yukarıdaki Python kodunu bir metin dosyasına yapıştır ve dosyayı port_scanner.py olarak kaydet.


---

2. Terminal veya Komut İstemcisini Aç:
Windows için CMD veya PowerShell, Linux/macOS için Terminali aç.


---

3. Komutu Çalıştır:
Aşağıdaki komut formatını kullanarak port taramasını başlatabilirsin:
Alıntı
python port_scanner.py [Hedef_IP] [Başlangıç_Port] [Bitiş_Port]
Örnek:
Alıntı
python port_scanner.py 192.168.1.1 1 1024
192.168.1.1 : Taranacak hedef IP adresi

1 : Taramaya başlayacağın port numarası

1024 : Taramayı sonlandıracağın port numarası


---

4. IP Adresini Doğrula:
Kod, verdiğin IP adresinin geçerli bir IPv4 adresi olup olmadığını kontrol eder. Yanlış girersen hata verir.


---

5. Port Aralığı Kontrolü:
Port numaraları 0 ile 65535 arasında olmalı ve başlangıç portu bitiş portundan küçük veya eşit olmalı.


---

6. Tarama İşlemi:
Kod belirtilen port aralığında çoklu iş parçacığı (thread) kullanarak tarama yapar ve açık portları ekrana yazdırır.


---

7. Çıktı Örneği:
Alıntı
192.168.1.1 üzerinde port taraması başlıyor (1-1024)
Port 22 açık - Servis: ssh
Port 80 açık - Servis: http
Tarama tamamlandı! Toplam süre: 0:00:05.123456
Kodumuz:
Alıntı
import socket
import threading
import datetime
import sys

# Bağlantı için zaman aşımı süresi
timeout = 1

# Taranacak portları belirlemek için fonksiyon
def port_scan(target_ip, port):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(timeout)
result = sock.connect_ex((target_ip, port))
if result == 0:
try:
service = socket.getservbyport(port)
except:
service = "Unknown"
print(f"Port {port} açık - Servis: {service}")
sock.close()
except Exception as e:
pass

# IP adresinin doğruluğunu kontrol et
def validate_ip(ip):
parts = ip.split('.')
if len(parts) != 4:
return False
for part in parts:
if not part.isdigit():
return False
num = int(part)
if num < 0 or num > 255:
return False
return True

# Ana tarama fonksiyonu
def scan_ports(target_ip, start_port, end_port):
print(f"{target_ip} üzerinde port taraması başlıyor ({start_port}-{end_port})")
start_time = datetime.datetime.now()

threads = []

for port in range(start_port, end_port + 1):
t = threading.Thread(target=port_scan, args=(target_ip, port))
threads.append(t)
t.start()

for t in threads:
t.join()

end_time = datetime.datetime.now()
total = end_time - start_time
print(f"Tarama tamamlandı! Toplam süre: {total}")

# Komut satırı argümanlarını işleme
if __name__ == "__main__":
if len(sys.argv) != 4:
print(f"Usage: python {sys.argv[0]} [Hedef_IP] [Başlangıç_Port] [Bitiş_Port]")
sys.exit(1)

target_ip = sys.argv[1]
if not validate_ip(target_ip):
print("Geçersiz IP adresi!")
sys.exit(1)

try:
start_port = int(sys.argv[2])
end_port = int(sys.argv[3])
if start_port < 0 or end_port > 65535 or start_port > end_port:
raise ValueError
except:
print("Port numaraları 0 ile 65535 arasında ve başlangıç portu bitiş portundan küçük olmalıdır.")
sys.exit(1)

scan_ports(target_ip, start_port, end_port)
Sorularınız ve istek Python araçlarınız için PM iletebilirsiniz