
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.
Fuente: linuxito
