Skip to content

MuhammetSec/Port-Scanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔍 Port Scanner

Python CLI tabanlı çoklu iş parçacıklı (multithreaded) port tarayıcı. Güvenlik önerileriyle birlikte açık portları tespit eder. Kullanıcı dostu arayüz, ASCII logo ve animasyonlu giriş ekranıyla birlikte gelir.

🚀 Özellikler

- ⚡ Hızlı tarama (multi-threaded)
- 🎨 Renkli terminal çıktısı (colorama + termcolor)
- 🔠 ASCII logo ve type-effect animasyon
- 🛡️ Açık portlara özel güvenlik önerileri
- 🧪 CLI argüman desteği
- 🔍 Servis/Protokol Algılama (SSH, HTTP, FTP, MySQL, vb.)

🧰 Gereksinimler

Proje sanal bir ortamda çalıştırılmalı:
python3 -m venv venv
source venv/bin/activate  # Windows için: venv\Scripts\activate
pip install -r requirements.txt

📦 Kurulum

git clone https://github.com/MuhammetSec-Exilex/Port-Scanner.git
cd Port-Scanner
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

🧪 Kullanım

Temel Kullanım

python3 PortScanner_1.0.py -t <hedef_ip_adresi> -sp <başlangıç_portu> -ep <bitiş_portu>

Argümanlar

Argüman Kısa Form Tip Varsayılan Açıklama
--target -t string ✓ Zorunlu Hedef IP adresi veya domain adı
--start_port -sp int ✓ Zorunlu Tarama başlangıç portu
--end_port -ep int ✓ Zorunlu Tarama bitiş portu
--timeout -to float 0.5 Socket timeout süresi (saniye cinsinden)
--workers -w int 100 Çalışan thread sayısı
--show-suspicious -ss bool false Şüpheli/açık görünen portları (banner yok) gösterir

Örnek Kullanımlar

Varsayılan ayarlarla tarama:

python3 PortScanner_1.0.py -t scanme.nmap.org -sp 20 -ep 100

Özel timeout ile tarama (1 saniye):

python3 PortScanner_1.0.py -t scanme.nmap.org -sp 20 -ep 100 -to 1.0

Daha fazla worker ile hızlı tarama (200 thread):

python3 PortScanner_1.0.py -t scanme.nmap.org -sp 20 -ep 100 -w 200

Özel timeout ve worker sayısı ile tarama:

python3 PortScanner_1.0.py -t scanme.nmap.org -sp 20 -ep 1000 -to 0.3 -w 150

Şüpheli portları da göster:

python3 PortScanner_1.0.py -t scanme.nmap.org -sp 1 -ep 500 -ss

📸 Ekran Görüntüsü

screenshot


🧠 Örnek Güvenlik Uyarısı

Port 21 (FTP): FTP transmits data in plaintext... 🔐 Öneri: FTPS/SFTP'ye geçin, anonim erişimi kapatın.

⚙️ Performans Ayarlaması

Timeout (Soket Zaman Aşımı)

--timeout (-to) parametresi soket bağlantısının zaman aşımını kontrol eder. Daha düşük değerler hızlı bir tarama sağlar, ancak yavaş ağlarda bağlantıları kaçırabilir.

  • Hızlı ağ (LAN): -to 0.3 → Daha hızlı sonuçlar
  • Normal ağ (İnternet): -to 0.5 → Varsayılan, dengeli
  • Yavaş ağ (Mobil/VPN): -to 1.0 veya -to 2.0 → Daha güvenilir

Workers (Çalışan Thread Sayısı)

--workers (-w) parametresi eşzamanlı tarama için kullanılan thread sayısını belirler. Daha fazla worker daha hızlı tarama sağlar, ancak sistem kaynaklarını daha fazla kullanır.

  • Düşük kaynaklar (Raspberry Pi/VM): -w 50 → Hafif
  • Normal sistem: -w 100 → Varsayılan
  • Güçlü sistem: -w 200 veya -w 300 → Agresif

Örnek Senaryolar

Geniş port aralığında hızlı tarama:

python3 PortScanner_1.0.py -t 192.168.1.1 -sp 1 -ep 10000 -w 200 -to 0.3

Uzak ve yavaş sunucu (VPN üzerinden):

python3 PortScanner_1.0.py -t example.com -sp 20 -ep 500 -w 50 -to 2.0

🔍 Servis Algılama Özelliği

Tarayıcı artık açık portlarda çalışan servisleri otomatik olarak tespit eder. socket.getservbyport() kullanarak, her açık port için ilişkili servis adını gösterir.

Örnek Çıktı:

[+] Port 22 is open (ssh)
[+] Port 80 is open (http)
[+] Port 443 is open (https)
[+] Port 3306 is open (mysql)

Bu bilgi, tarama sonuçlarında da görüntülenir:

Port 22 (ssh): Secure Shell (SSH) is widely used for remote server management...
Port 80 (http): HTTP does not provide encryption...
Port 443 (https): Ensure the SSL/TLS certificate is valid...

🚀 Versiyon 1.2 - Girdi Doğrulama & Hata Yönetimi Güncellemesi

Girdi Doğrulama

  • Port Aralığı Kontrolü: -sp ve -ep değerleri artık $1$-$65535$ aralığında doğrulanır
  • Mantıksal Kontrol: Başlangıç portu bitiş portundan büyükse işlem durdurulur

Hata Yönetimi

  • Net Hata Mesajları: Hatalar kırmızı renkte, anlaşılır biçimde gösterilir
  • Güvenli Çıkış: Geçersiz girişlerde program sys.exit(1) ile temiz şekilde kapanır

Banner Grabbing (Yanlış Pozitifleri Azaltma)

  • Akıllı Doğrulama (2 Adım): Önce recv(1024) ile pasif banner denemesi yapılır (SSH/FTP/MySQL). Veri gelmezse HEAD / HTTP/1.1 gönderilip tekrar recv(1024) ile HTTP bannerı denenir.
  • Doğrulama Mantığı: Her iki adımda da veri gelmezse port ŞÜPHELİ sayılır, veri gelirse AÇIK olarak doğrulanır.
  • Varsayılan Temiz Çıktı: Şüpheli portlar varsayılan olarak ekrana yazdırılmaz ve özet listede yer almaz.
  • İsteğe Bağlı Görüntüleme: -ss / --show-suspicious kullanılırsa şüpheli portlar sarı renkte gösterilir.

Örnek Hata Mesajı

[!] Error: Start port cannot be greater than end port.

� Versiyon 1.1 - Performans & Stabilite Güncellemesi

Performans İyileştirmeleri

  • Çoklu İş Parçacığı Optimizasyonu: Manuel thread yönetimi yerine ThreadPoolExecutor kullanımı (maksimum 100 worker), geniş port aralıklarında sistem kaynaklarının tükenmesini ve thread patlamasını önler
  • Daha Hızlı Tarama Süreleri: Socket timeout 1.0s'den 0.5s'ye düşürüldü, güvenilirlikten ödün vermeden genel tarama hızını önemli ölçüde artırır
  • Kaynak Yönetimi: Otomatik temizleme ve thread havuzu yönetimi, verimli CPU ve bellek kullanımını sağlar

Hata Düzeltmeleri

  • Zarif Kesintileme: Tarama sırasında Ctrl+C kullanıldığında donma sorunu düzeltildi—artık anında ve temiz bir şekilde sonlanır
  • Hata Yönetimi: Thread havuzu içindeki exception handling iyileştirildi, sessiz hataları önler
  • Servis Algılama: Açık portlarda çalışan servislerin otomatik olarak tespit edilmesi eklendi

Teknik Detaylar

  • Manuel threading.Thread kullanımından concurrent.futures.ThreadPoolExecutor'a geçiş yapıldı
  • Otomatik kaynak temizliği için context manager kullanımı eklendi
  • Anında tarama sonlandırması için geliştirilmiş KeyboardInterrupt sinyal işleme
  • socket.getservbyport() entegrasyonu ile servis algılama özelliği eklendi

Yükseltme Önerisi: Bu versiyon, özellikle büyük port aralıkları (1000+ port) tarayan veya sınırlı kaynaklara sahip sistemlerde çalışan tüm kullanıcılar için önerilir.


�👨‍💻 Geliştirici

  • Muhammet Alperen Şıvgın – GitHub

📜 Lisans

MIT Lisansı. Detaylar için LICENSE dosyasını inceleyin.

About

Simple Port Scanner

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages