Dodany przez: klima, 22:55 25-06-2025

Nowy Pobierz
  1. from ping3 import ping, verbose_ping
  2. import ipaddress
  3. from concurrent.futures import ThreadPoolExecutor, as_completed
  4.  
  5. def is_host_up(ip, timeout=1):
  6.     """Sprawdza, czy host odpowiada na ping."""
  7.     try:
  8.         response = ping(str(ip), timeout=timeout)
  9.         return response is not None
  10.     except Exception:
  11.         return False
  12.  
  13. def scan_ip_range(base_ip, start=1, end=254, max_threads=100):
  14.     """Skanuje zakres IP"""
  15.     base = ipaddress.ip_address(base_ip)
  16.     network_base = ipaddress.IPv4Address(int(base) & 0xFFFFFF00)
  17.     print(f"[INFO] Skanowanie zakresu {network_base}.1 do {network_base}.{end}")
  18.  
  19.     active_hosts = []
  20.  
  21.     with ThreadPoolExecutor(max_threads) as executor:
  22.         future_to_ip = {
  23.             executor.submit(is_host_up, ipaddress.IPv4Address(int(network_base) + i)):
  24.             ipaddress.IPv4Address(int(network_base) + i)
  25.             for i in range(start, end + 1)
  26.         }
  27.  
  28.         for future in as_completed(future_to_ip):
  29.             ip = future_to_ip[future]
  30.             if future.result():
  31.                 print(f"[ACTIVE] {ip}")
  32.                 active_hosts.append(str(ip))
  33.  
  34.     print("\n[RESULT] Aktywne hosty:")
  35.     for ip in active_hosts:
  36.         print(f" - {ip}")
  37.  
  38. if __name__ == "__main__":
  39.     # mielenie 192.168.0.1–254
  40.     scan_ip_range("192.168.0.0")
  41.  

Źródło:

Ostatnie wpisy

Linki

Funkcje