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.


Tal vez pueda interesarte


Compartí este artículo