Github'da ki scannerlar göre tabi ki baya eksik ama amacım öğretmek olduğunu unutmayın. Anlatım detaylı ve basit ama yazacağımız araç başlangıcın biraz üstü olacak.
Bu Seride Bizi Ne Bekliyor?
PORT SCANNER NEDİR?
Bir çok açıklaması mevcuttur ama gerçek hayat ve metedoloji olarak harmanlarsak:
Siber Güvenlikte Neden Önemli?
Saldırgan açısından basit örnek:1. Port tarama yap Port 22 açık (SSH)
2. SSH'ye brute-force yap Şifre bul
3. Sisteme gir!
Savunmacı açısından basit örnek:
1. Kendi sistemini tara
2. Gereksiz açık port var mı?
3. Port 23 (Telnet) açık kapatabiliriz!
Kritik Portlar:
WAT Port Scanner Kütüphane
"socket": ilk olarak kütüphaneleri import etmemiz gerekiyor ilk kütüphanemiz
Ne İşe Yarar?:
TCP/IP protokolü ile ağda iletişim kurmak için. Gerçek hayat örneği ise bence en uyumlusu "telefon numarası çevirip birini armak" gibi düşünün.
Tamamdır o zaman sayfanın ilk kısmına python kodumuzu yazalım.
Python:
import socket
"time": Süre ölçmek, beklemek, performans analizi.
Python:
import time
"sys": python yorumlayıcısı ile etkileşim.
Python:
import sys
Python:
import os
WAT Port Scanner Yardımcı Fonksiyonlar
İlk olarak terminalde komutlar olacağı terminal sıfırlayalım.linux clear, windows ise cls diyoruz burada.
Python:
def clear_screen():
os.system('clear' if os.name == 'posix' else 'cls')
Renk sınıfı ekleyelim:
Python:
class Color:
RED = '\033[91m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
CYAN = '\033[96m'
BOLD = '\033[1m'
RESET = '\033[0m'
WAT Port Scanner Animasyon
Terminali biraz havalı yapalım değil mi bu yüzden animasyonlar, banner yapalım öncelikle. Nedeni ise okuyup-anlama sistemi için gayet makul kodlar.
Python:
def typing_effect(text, delay=0.03):
for char in text:
sys.stdout.write(char)
sys.stdout.flush()
time.sleep(delay)
print()
Banner fonksiyonumuzu yapalım:
Python:
def banner():
clear_screen()
ascii_art = f"""
{Color.RED}{Color.BOLD}
██╗ ██╗ █████╗ ████████╗ ██╗ ██╗ ██╗
██║ ██║ ██╔══██╗ ╚══██╔══╝ ██║ ██║███║
██║ █╗ ██║ ███████║ ██║ ██║ ██║╚██║
██║███╗██║ ██╔══██║ ██║ ╚██╗ ██╔╝ ██║
╚███╔███╔╝ ██║ ██║ ██║ ╚████╔╝ ██║
╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ ╚═══╝ ╚═╝
{Color.RESET}"""
print(ascii_art)
print(f"{Color.CYAN}╔════════════════════════════════════════╗{Color.RESET}")
print(
f"{Color.CYAN}║{Color.RESET} {Color.YELLOW}Port Scanner v1.0 - By WAT{Color.RESET} {Color.CYAN}║{Color.RESET}")
print(f"{Color.CYAN}╚════════════════════════════════════════╝{Color.RESET}")
print()
typing_effect(f"{Color.RED}[!] UYARI: Sadece eğitim amaçlıdır!{Color.RESET}", 0.02)
print()
WAT Port Scanner Tarama
Python:
def scan_port(ip, port, service_name):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(0.5)
result = sock.connect_ex((ip, port))
if result == 0:
print(
f"{Color.GREEN}[+]{Color.RESET} Port {port:5} {Color.GREEN}AÇIK{Color.RESET} → {Color.CYAN}{service_name}{Color.RESET}")
sock.close()
except Exception as e:
pass
EE WAT nerede network bilgileri alın cepleyin
NETWORK BİLGİSİ - TCP vs UDP:
| Özellik | TCP | UDP |
| Bağlantı | 3-way handshake | Bağlantısız |
| Güvenilirlik | %100 (paket kaybı yok) | Paket kaybı olabilir |
| Hız | Yavaş (overhead var) | Hızlı |
| Sıralama | Paketler sıralı gelir | Sırasız gelebilir |
| Kullanım | HTTP, SSH, FTP | DNS, VoIP, Video |
Port taramada neden TCP?
"Port açık mı?" sorusu = Bağlantı kurulabiliyor mu?
TCP bağlantı kurar: Başarılıysa açık, değilse kapalı döner.
WAT Port Scanner Kritik Portlar
Python:
important_ports = {
20: "FTP Data",
21: "FTP Control",
22: "SSH",
23: "Telnet",
25: "SMTP",
53: "DNS",
80: "HTTP",
110: "POP3",
143: "IMAP",
443: "HTTPS",
445: "SMB",
3306: "MySQL",
3389: "RDP",
5432: "PostgreSQL",
8080: "HTTP Proxy",
8443: "HTTPS Alt"
}
WAT PORT SCANNER MAİN
Python:
banner()
target = input(f"{Color.GREEN}[?]{Color.RESET} Hedef IP veya Domain: ")
try:
target_ip = socket.gethostbyname(target)
print(f"{Color.GREEN}[✓]{Color.RESET} Hedef: {target} → {target_ip}")
except socket.gaierror:
print(f"{Color.RED}[✗] Hedef çözümlenemedi!{Color.RESET}")
exit()
print(f"\n{Color.YELLOW}[*]{Color.RESET} {len(important_ports)} port taranıyor...\n")
start_time = time.time()
for port, service in important_ports.items():
scan_port(target_ip, port, service)
end_time = time.time()
print(f"\n{Color.GREEN}[✓]{Color.RESET} Tarama tamamlandı!")
print(f"{Color.YELLOW}[*]{Color.RESET} Süre: {end_time - start_time:.2f} saniye")
Şimdi komutlarımız:
cd klasörünüz/
python3 dosyaadi.py
Resimler:
Tam hali
Python:
import socket
import time
import sys
import os
def clear_screen():
os.system('clear' if os.name == 'posix' else 'cls')
class Color:
RED = '\033[91m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
CYAN = '\033[96m'
BOLD = '\033[1m'
RESET = '\033[0m'
def typing_effect(text, delay=0.03):
for char in text:
sys.stdout.write(char)
sys.stdout.flush()
time.sleep(delay)
print()
def banner():
clear_screen()
ascii_art = f"""
{Color.RED}{Color.BOLD}
██╗ ██╗ █████╗ ████████╗ ██╗ ██╗ ██╗
██║ ██║ ██╔══██╗ ╚══██╔══╝ ██║ ██║███║
██║ █╗ ██║ ███████║ ██║ ██║ ██║╚██║
██║███╗██║ ██╔══██║ ██║ ╚██╗ ██╔╝ ██║
╚███╔███╔╝ ██║ ██║ ██║ ╚████╔╝ ██║
╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ ╚═══╝ ╚═╝
{Color.RESET}"""
print(ascii_art)
print(f"{Color.CYAN}╔════════════════════════════════════════╗{Color.RESET}")
print(
f"{Color.CYAN}║{Color.RESET} {Color.YELLOW}Port Scanner v1.0 - By WAT{Color.RESET} {Color.CYAN}║{Color.RESET}")
print(f"{Color.CYAN}╚════════════════════════════════════════╝{Color.RESET}")
print()
typing_effect(f"{Color.RED}[!] UYARI: Sadece eğitim amaçlıdır!{Color.RESET}", 0.02)
print()
def scan_port(ip, port, service_name):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(0.5)
result = sock.connect_ex((ip, port))
if result == 0:
print(
f"{Color.GREEN}[+]{Color.RESET} Port {port:5} {Color.GREEN}AÇIK{Color.RESET} → {Color.CYAN}{service_name}{Color.RESET}")
sock.close()
except Exception as e:
pass
important_ports = {
20: "FTP Data",
21: "FTP Control",
22: "SSH",
23: "Telnet",
25: "SMTP",
53: "DNS",
80: "HTTP",
110: "POP3",
143: "IMAP",
443: "HTTPS",
445: "SMB",
3306: "MySQL",
3389: "RDP",
5432: "PostgreSQL",
8080: "HTTP Proxy",
8443: "HTTPS Alt"
}
banner()
target = input(f"{Color.GREEN}[?]{Color.RESET} Hedef IP veya Domain: ")
try:
target_ip = socket.gethostbyname(target)
print(f"{Color.GREEN}[✓]{Color.RESET} Hedef: {target} → {target_ip}")
except socket.gaierror:
print(f"{Color.RED}[✗] Hedef çözümlenemedi!{Color.RESET}")
exit()
print(f"\n{Color.YELLOW}[*]{Color.RESET} {len(important_ports)} port taranıyor...\n")
start_time = time.time()
for port, service in important_ports.items():
scan_port(target_ip, port, service)
end_time = time.time()
print(f"\n{Color.GREEN}[✓]{Color.RESET} Tarama tamamlandı!")
print(f"{Color.YELLOW}[*]{Color.RESET} Süre: {end_time - start_time:.2f} saniye")
Evet bendeniz watnea, ara ara destek oluyorum, kendimi geliştiriyorum. Okuma yetimizi git gide kaybediyoruz bu yüzden buraya kadar geldiysen ve yaptıysan tebrik ederim. İyi forumlar.







