En este artículo comparto un pequeño script Bash para resolver de forma reversa (reverse lookup) todas las direcciones IPv4 de una clase C pasada como parámetro. Es decir, mapear las direcciones IPv4 a sus nombres de host (hostnames) correspondientes, consultando a los servidores de nombre (DNS) configurados en el sistema.
Decidí llamar al script reverse_lookup.sh
(muy original el nombre):
#!/bin/bash if [ $# -lt 1 ] then echo "uso: $0 <clase C>" exit -1 fi ARG1=$1 IP=(${ARG1//./ }) for (( K=1; K<255; K++ )) do IP[3]=$K ADDR=${IP[0]}.${IP[1]}.${IP[2]}.$K ANS=$(dig -x $ADDR 2>/dev/null | grep -v ";; flags:" | grep -A 1 "ANSWER" | grep "PTR") COUNT=$(echo -n $ANS | wc -w) if [ $COUNT -gt 0 ] then echo -n $ADDR" ==> " echo $ANS | cut -d' ' -f5 fi done
El script simplemente hace una consulta reversa utilizando la herramienta dig
para cada dirección IP de la red clase C, desde 1 hasta 254. Sólo requiere una dirección de red clase C (sin máscara, finalizando con 0) pasada como parámetro, por ejemplo 192.168.1.0
.
Ejemplo de ejecución:
sysadmin@debian:~/scripts$ ./reverse_lookup.sh 192.168.1.0 192.168.1.16 ==> ns1.linuxito.com. 192.168.1.53 ==> ns2.linuxito.com. 192.168.1.60 ==> saraza.linuxito.com. 192.168.1.76 ==> proxy.linuxito.com. 192.168.1.77 ==> bug.linuxito.com. 192.168.1.78 ==> fulanito.linuxito.com. 192.168.1.80 ==> mail.linuxito.com. 192.168.1.155 ==> db34.linuxito.com. 192.168.1.159 ==> menganito.linuxito.com. 192.168.1.199 ==> hal9000.linuxito.com. 192.168.1.200 ==> streaming.linuxito.com. 192.168.1.202 ==> www.linuxito.com. 192.168.1.203 ==> sultanito.linuxito.com.
Para guardar en el toolbox de todo sysadmin/pentester.