Descubriendo la red con Python y Nmap – Parte 2

Seguimos con nuestra segunda parte de Python y Nmap, aunque no sé yo si seguir o no, todavía espero mi jamón de la 1º parte 😛

En esta segunda parte vamos a seguir aprendiendo más opciones que nos trae la librería de Python-Nmap y en la siguiente realizaremos un pequeño script que nos solucione el descubrimiento de una red para sacar los equipos vivos y no tener que ir limpiando la información sobrante 🙂

python-nmap

 Después de realizar nuestros primeros escaneos, nos puede interesar saber qué ha realizado nmap gracias a command_line()

results = nm.scan('192.168.0.0/24')
nm.command_line()
u'nmap -oX - -sV 192.168.0.0/24'

Si escaneamos un rango de red gracias a all_hosts() podemos ver cuales están levantados y cuales no, el cual usaremos en el siguiente post para nuestro script que nos guardará los hosts en un fichero para facilitarnos los siguientes escaneos.

nm.all_hosts()
 [u'192.168.0.1', u'192.168.0.101', u'192.168.0.102']

 

Otra cosa muy interesante es poder pasarle los argumentos que queramos al escaneo en el parámetro arguments.

results = nm.scan('192.168.0.1', arguments="-sSV -A -n -T2"

 

También podemos realizar escaneos asíncronos mediante PortScannerAsync() al igual que se hacía con PortScanner() pero con un parámetro más de callback donde definimos la función de retorno.

nma = nmap.PortScannerAsync()
def callback_result(host, scan_result):
    print '------------------'
    print host, scan_result
 
nma.scan(hosts='192.168.1.0/30', arguments='-sP', callback=callback_result)
while nma.still_scanning():
    print("Waiting >>>")
    nma.wait(2)


Con esto ya podemos comenzar a hacer nuestras herramientas que nos ayudarán en nuestras labores de pentester.

En el próximo capítulo veremos como guardar los hosts en un fichero para saber las ips de una red y poder luego usarlas en otros escáneres de vulnerabilidades o de lo que nos plazca.

Sigo esperando el jamón… no digo nada y lo digo todo… que sin alimentarse uno no puede programar 😉

Happy Hacking.