Usando Nmap con Python

En python podemos hacer uso de nmap a través de la libreria python-nmap la cual nos permite manipular facilmente los resultados de un escaneo, ademas, puede ser una herramienta perfecta para administradores de sistemas o consultores de seguridad informática a la hora de automatizar procesos de penetration testing.

La ultima versión de python-nmap es la 0.3.2 y puede ser descargada desde: http://xael.org/norman/python/python-nmap/python-nmap-0.3.2.tar.gz para proceder con la instalación descomprimimos el paquete descargado, saltamos al nuevo directorio y ejecutamos el comando de instalación  #python setup.py install

Ahora python-nmap es un modulo python que podemos invocar desde nuestros scripts o desde la terminal interactiva, por ejemplo.

Una vez hayamos comprobado que la instalación ha sido correcta podemos empezar a hackear el planeta, o por lo menos a escanearlo, para ello debemos antes que nada hacer una instanciación de la clase PortScanner(), así podremos acceder al método mas importante: scan. Una buena practica para entender como trabaja una función, método u objeto es usar la función help(), o dir() para saber las funciones/métodos disponibles en un modulo u objeto

ahora, si ejecutamos help(escaneo.scan) tendremos:
el método recibe tres argumentos el host(s) victima, los puertos y los argumentos, además al final agrega como deben ser enviados los parámetros (todos deben ser string), un ejemplo verdadero sería:

el resultado del escaneo es diccionario de estrafalaria proporción  que contiene la misma información que devolvería un escaneo hecho con Nmap directamente.

A los “values” como es lógico se accede a través de sus “keys”, sin embargo hacerlo en este diccionario sería titanico debido a su tamaño, lo que podemos hacer es listar con dir() los métodos disponibles en el  “value” IP de el diccionario que devuelve el escaneo

con el método tcp() y pasando el valor numérico del puerto que queremos consultar obtendremos versión del mismo ademas servidor y estado

también podemos volver al objeto que instanciamos con la clase PortScanner() y probar sus métodos

Si desean hacer algo mas complejo todo es cuestión de probar la variedad de métodos disponibles e integrar otras librerías/módulos
#HappyCoding #HappyHacking