Scapy kütüphanesiyle geliştirilmiş özel ağ tarama aracı. ARP taraması ile yerel ağdaki cihazları keşfeder, SYN taraması ile açık portları tespit eder. Detaylı raporlama ve özelleştirilebilir tarama profilleri sunar.
Ağ yöneticileri ve güvenlik araştırmacıları için Python'un Scapy kütüphanesi üzerine kurulmuş, esnek ve güçlü bir ağ tarama aracı. Nmap gibi ticari araçlara alternatif olarak tasarlanmış olup, tamamen özelleştirilebilir tarama senaryoları sunar.
Ham paket oluşturma ve gönderme yeteneği sayesinde, standart araçların sunamadığı esneklikte ağ keşfi ve güvenlik taraması yapabilir. Eğitim amaçlı olarak ağ protokollerinin çalışma mantığını anlamak için de idealdir.
Yerel ağdaki tüm aktif cihazları IP ve MAC adresleriyle birlikte keşfeder. Broadcast ARP istekleriyle hızlı tarama.
TCP SYN paketleri göndererek açık portları tespit eder. Half-open tarama ile gizli ve hızlı tarama.
Açık portlardaki çalışan servisleri ve versiyonlarını banner grabbing ile tespit eder.
Keşfedilen cihazları, açık portları ve servisleri görsel bir ağ haritası olarak sunar.
from scapy.all import *
import concurrent.futures
class NetworkScanner:
def arp_scan(self, network):
"""Yerel ağdaki aktif cihazları keşfet"""
arp = ARP(pdst=network)
ether = Ether(dst="ff:ff:ff:ff:ff:ff")
result = srp(ether/arp, timeout=3, verbose=0)[0]
devices = []
for sent, received in result:
devices.append({
'ip': received.psrc,
'mac': received.hwsrc
})
return devices
def syn_scan(self, target, ports):
"""SYN taraması ile açık portları bul"""
open_ports = []
def scan_port(port):
pkt = IP(dst=target)/TCP(dport=port, flags="S")
resp = sr1(pkt, timeout=1, verbose=0)
if resp and resp[TCP].flags == 0x12:
return port
return None
with concurrent.futures.ThreadPoolExecutor(
max_workers=50
) as executor:
results = executor.map(scan_port, ports)
open_ports = [p for p in results if p]
return open_ports