Una amiga administradora hizo un registro con una herramienta propietaria en Windows. Recordé la librería de python ipcalc que facilita el cálculo de direcciones IP y redes (un artículo de su uso acá).
Además existe la librería o herramienta scapy, el cual permite capturar y modificar paquetes de red (la documentación se puede revisar en el siguiente enlace).
Una alternativa es usar los comandos ping y arp por medio de python con el módulo commands; es preferible usar scapy que permite descubrir la dirección MAC de los equipos que tienen asignado las IPs.
Así que por un lado se usa ipcalc para definir el rango de la red según la mascara y luego con scapy se descubre las direcciones MAC.
A continuación el código que devuelve la dirección MAC de cada IP utilizada en la red:
#!/usr/bin/env python #Se importa los modulos necesarios. from ipcalc import IP, Network from scapy.all import srp,Ether,ARP,conf #Se desactiva el verbose de la captura y envio de paquetes. conf.verb=0 #Se genera un ciclo con el rango de IPs dando la RED y la mascara for ip in Network('192.168.12.128/25'): #Se realiza un broadcast de MAC pasando cada IP el cual devuelve la #direccion MAC de la IP consultada. ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=str(ip)),timeout=2) for snd,rcv in ans: #Se muestra en pantalla la direccion MAC y la direccion IP print rcv.sprintf(r"%Ether.src% y %ARP.psrc%")Al ejecutar el programa se tiene lo siguiente:
ernesto@jewel:~/bin/python$ sudo ./descubrir.py WARNING: No route found for IPv6 destination :: (no default route?) 00:26:35:c6:93:0d y 192.168.12.130 00:2e:0b:c5:70:3c y 192.168.12.132 00:2e:90:c2:ec:51 y 192.168.12.134 00:50:ca:c1:71:8a y 192.168.12.136 00:32:57:ce:81:e7 y 192.168.12.138 00:2e:90:c4:58:7c y 192.168.12.139 00:2c:25:ce:ae:be y 192.168.12.140 d0:37:88:c4:11:ed y 192.168.12.141 00:2e:90:cc:f5:16 y 192.168.12.142 00:2c:c4:c4:26:28 y 192.168.12.148 40:7a:ab:ce:11:c0 y 192.168.12.150 3c:53:8e:cc:4d:89 y 192.168.12.161 1c:5b:d6:c9:6d:a9 y 192.168.12.169 00:2e:7f:c4:8d:d7 y 192.168.12.170 00:24:c2:c8:23:8d y 192.168.12.172 68:19:ed:c75:44:31 y 192.168.12.174 74:3f:68:c2:91:d6 y 192.168.12.196 00:30:aa:c2:6d:3c y 192.168.12.201 c8:3c:dc:c8:a9:53 y 192.168.12.208 00:34:f2:c5:2f:21 y 192.168.12.211 00:34:f2:cc:2e:d0 y 192.168.12.212 00:34:f2:c5:35:70 y 192.168.12.214 00:34:f2:c3:1a:ee y 192.168.12.215 00:34:f2:c3:1b:4c y 192.168.12.216 00:34:f2:c5:33:49 y 192.168.12.224 00:3c:02:c6:b5:3f y 192.168.12.225 00:3e:90:c8:bb:d6 y 192.168.12.251
Así pues desde Linux y con Python se puede capturar la información de las direcciones MAC de las IPs asignadas con pocas líneas de código.
1 comentario:
Bueno con nmap se puede hacer algo así,
nmap -sn a.b.c.d-z -pr
ejemplo nmap -sn 10.0.70.1-70 -pr
y se le pueda añadir algunos filtros estilo
nmap -sn 10.0.$1.$inicio-$fin -pr | grep report | awk {'print $6'} | sed 's/(//g' | sed 's/)//g'
Publicar un comentario