Files
2026-04-17 09:01:34 -05:00

89 lines
3.0 KiB
Python
Executable File

import socket
from concurrent.futures import ThreadPoolExecutor
def get_local_ip():
"""
Ermittelt die lokale IP-Adresse des Geräts.
:return: Lokale IP-Adresse als String
"""
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.connect(("8.8.8.8", 80)) # Verbindung zu einem öffentlichen DNS-Server herstellen
return s.getsockname()[0]
def get_ip_from_hostname(hostname):
"""
Ermittelt die IP-Adresse für einen gegebenen Hostnamen (z.B. eine Website).
:param hostname: Hostname oder URL
:return: IP-Adresse als String
"""
return socket.gethostbyname(hostname)
def scan_port(ip, port):
"""
Überprüft, ob ein bestimmter Port an einer bestimmten IP-Adresse geöffnet ist.
:param ip: IP-Adresse des Hosts
:param port: Portnummer, die gescannt werden soll
:return: Tuple (port, status), wobei status True ist, wenn der Port geöffnet ist, andernfalls False
"""
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.settimeout(1) # Timeout auf 1 Sekunde setzen
result = sock.connect_ex((ip, port))
if result == 0:
return port, True
else:
return port, False
def scan_ports(ip, start_port, end_port, max_workers=100):
"""
Scannt eine Reihe von Ports an einer bestimmten IP-Adresse.
:param ip: IP-Adresse des Hosts
:param start_port: Erster Port, der gescannt werden soll
:param end_port: Letzter Port, der gescannt werden soll
:param max_workers: Maximale Anzahl gleichzeitiger Threads
:return: Liste von offenen Ports
"""
open_ports = []
with ThreadPoolExecutor(max_workers=max_workers) as executor:
futures = [executor.submit(scan_port, ip, port) for port in range(start_port, end_port + 1)]
for future in futures:
port, is_open = future.result()
if is_open:
open_ports.append(port)
return open_ports
def main():
# Lokale IP-Adresse ermitteln und anzeigen
local_ip = get_local_ip()
print(f"Ihre lokale IP-Adresse ist: {local_ip}")
# Benutzer nach der zu scannenden Website fragen
website = input("Bitte geben Sie die Website (ohne 'http://' oder 'https://') ein, die gescannt werden soll: ")
# IP-Adresse der Website ermitteln
try:
target_ip = get_ip_from_hostname(website)
print(f"Die IP-Adresse von {website} ist: {target_ip}")
except socket.gaierror:
print("Ungültiger Hostname. Bitte überprüfen Sie die Website-Adresse.")
return
# Bereich der Ports, die gescannt werden sollen
start_port = 1
end_port = 1024
print(f"Scanning ports {start_port}-{end_port} on {target_ip}...")
open_ports = scan_ports(target_ip, start_port, end_port)
if open_ports:
print("Open ports found:")
for port in open_ports:
print(f"Port {port} is open")
else:
print("No open ports found")
if __name__ == "__main__":
main()