Bu makalede Python kullanarak gelişmiş bir port tarayıcı scripti yazacağız. Bu script, kullanıcıdan bir IP adresi veya domain ve port aralığı girişi alacak, belirtilen portları tarayarak hangilerinin açık olduğunu listeleyecektir. Ayrıca, tarama sürecini optimize etmek için birden fazla ipucu sunacağız.


Gereksinimler ve Hazırlıklar

Bu script için şu kütüphaneleri kullanacağız:

  • socket: TCP/UDP soketleri oluşturmak için kullanılır.
  • argparse: Kullanıcıdan komut satırı argümanları almak için kullanılır.
  • threading: Performansı arttırmak için birden fazla portun aynı anda taranması.
  • queue: Tarama işleri için bir iş kuyruğu oluşturmak.

Bu kütüphaneleri aşağıdaki komutla yükleyebilirsiniz:

pip install --upgrade pip

Projenin Yapısı

Adımlar:

  1. Kullanıcıdan hedef IP veya domain ve port aralığı al.
  2. Her bir port için TCP soket oluştur ve hedefe bağlan.
  3. Bağlantı başarılıysa portun açık olduğunu kaydet.
  4. Sonuçları ekrana veya bir dosyaya yaz.

Kodlama Aşamaları

Adım 1: Kullanıcıdan Girdi Alma

Kullanıcıdan hedef IP veya domain ve port aralığı almak için argparse kütüphanesini kullanacağız.

import argparse

def get_user_input():
    parser = argparse.ArgumentParser(description="Gelişmiş Python Port Tarayıcı")
    parser.add_argument("-t", "--target", type=str, required=True, help="Hedef IP adresi veya domain")
    parser.add_argument("-p", "--ports", type=str, required=True, help="Port aralığı (min-max)")
    args = parser.parse_args()

    target = args.target
    try:
        port_range = list(map(int, args.ports.split("-")))
        if len(port_range) != 2 or port_range[0] > port_range[1]:
            raise ValueError
    except ValueError:
        raise argparse.ArgumentTypeError("Port aralığı hatalı. Örneğin: 20-80")

    return target, port_range

Açıklama:

  • Kullanıcıdan IP ve port aralığı girdisi alınır.
  • -t ile hedef IP/domain, -p ile port aralığı belirtilir.
  • Port aralığı doğrulanır ve bir listeye dönüştürülür.

Adım 2: TCP Bağlantı Testi

Hedef portları taramak için bir TCP soketi oluşturalım.

import socket

def scan_port(target, port):
    try:
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.settimeout(1)  # 1 saniye zaman aşımı
            result = s.connect_ex((target, port))  # 0 dönerse bağlantı başarılı
            if result == 0:
                print(f"[+] Port {port} AÇIK")
            else:
                print(f"[-] Port {port} KAPALI")
    except Exception as e:
        print(f"[!] Port {port} taranırken hata: {e}")

Açıklama:

  • socket.AF_INET IPv4 kullanımını belirtir.
  • socket.SOCK_STREAM bir TCP soketi oluşturur.
  • connect_ex metoduyla hedefe bağlanılır; 0 dönerse başarılıdır.

Adım 3: Port Tarama ve Multithreading

Performansı arttırmak için her portu ayrı bir iş parçacığında tarayacağız.

import threading
from queue import Queue

port_queue = Queue()

def worker(target):
    while not port_queue.empty():
        port = port_queue.get()
        scan_port(target, port)
        port_queue.task_done()

def main():
    target, port_range = get_user_input()
    for port in range(port_range[0], port_range[1] + 1):
        port_queue.put(port)

    threads = []
    for _ in range(10):  # Aynı anda 10 iş parçacığı
        t = threading.Thread(target=worker, args=(target,))
        threads.append(t)
        t.start()

    for t in threads:
        t.join()

    print("[+] Tüm portlar tarandı.")

if __name__ == "__main__":
    main()

Açıklama:

  • Queue taranacak portları kuyruğa ekler.
  • worker fonksiyonu her bir iş parçacığına atanır ve portları tarar.
  • Aynı anda 10 iş parçacığı başlatılır.

Sonuçları Kayıt Etme

Sonuçları bir dosyaya kayıt etmek için aşağıdaki kodu ekleyebilirsiniz:

def save_results(results):
    with open("scan_results.txt", "w") as f:
        for line in results:
            f.write(line + "\n")

# scan_port fonksiyonunda açık portları kaydet:
open_ports = []
if result == 0:
    open_ports.append(f"Port {port} AÇIK")
save_results(open_ports)

Bu makalede basit bir port tarayıcıdan, performansı optimize eden ve kullanıcı dostu bir arayüz sağlayan gelişmiş bir Python scripti oluşturduk. Bu scripte isteğe göre farklı özellikler eklenebilir.

Tepkiniz ne oldu ?

Heyecanlı
0
Mutlu
0
Aşık
0
Emin değilim
0
Şapşal
0

İlginizi Çekebilir

Bir cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Daha fazlası:Geliştirme