26 lines
885 B
Python
26 lines
885 B
Python
import socket
|
|
import ipaddress
|
|
import nmap
|
|
|
|
class NetworkScanner:
|
|
@staticmethod
|
|
def get_network_range():
|
|
"""Obtiene el rango de red basado en la IP local."""
|
|
hostname = socket.gethostname()
|
|
local_ip = socket.gethostbyname(hostname)
|
|
network = ipaddress.ip_network(f"{local_ip}/24", strict=False)
|
|
print(str(network))
|
|
return str(network)
|
|
|
|
@staticmethod
|
|
def scan_network(ip_range):
|
|
"""Realiza un escaneo de red y devuelve los dispositivos detectados."""
|
|
nm = nmap.PortScanner()
|
|
nm.scan(hosts=ip_range, arguments='-sn')
|
|
devices = []
|
|
for host in nm.all_hosts():
|
|
if nm[host].state() == "up":
|
|
mac = nm[host]['addresses'].get('mac', 'No MAC address found')
|
|
devices.append({'ip': nm[host]['addresses']['ipv4'], 'mac': mac})
|
|
return devices
|