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.- ⚡ 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.)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.txtgit clone https://github.com/MuhammetSec-Exilex/Port-Scanner.git
cd Port-Scanner
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtpython3 PortScanner_1.0.py -t <hedef_ip_adresi> -sp <başlangıç_portu> -ep <bitiş_portu>| 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 |
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.0Daha 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 -ssPort 21 (FTP): FTP transmits data in plaintext... 🔐 Öneri: FTPS/SFTP'ye geçin, anonim erişimi kapatın.
--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.0veya-to 2.0→ Daha güvenilir
--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 200veya-w 300→ Agresif
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.3Uzak ve yavaş sunucu (VPN üzerinden):
python3 PortScanner_1.0.py -t example.com -sp 20 -ep 500 -w 50 -to 2.0Tarayı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.
[+] 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...
-
Port Aralığı Kontrolü:
-spve-epdeğerleri artık$1$ -$65535$ aralığında doğrulanır - Mantıksal Kontrol: Başlangıç portu bitiş portundan büyükse işlem durdurulur
- 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
- Akıllı Doğrulama (2 Adım): Önce
recv(1024)ile pasif banner denemesi yapılır (SSH/FTP/MySQL). Veri gelmezseHEAD / HTTP/1.1gönderilip tekrarrecv(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-suspiciouskullanılırsa şüpheli portlar sarı renkte gösterilir.
[!] Error: Start port cannot be greater than end port.
- Çoklu İş Parçacığı Optimizasyonu: Manuel thread yönetimi yerine
ThreadPoolExecutorkullanı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
- 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
- Manuel
threading.Threadkullanımındanconcurrent.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.
- Muhammet Alperen Şıvgın – GitHub
MIT Lisansı. Detaylar için LICENSE dosyasını inceleyin.
