Uso básico de Nmap con Python

Utilizando Python-nmap
Python-nmap es una librería que se encuentra en desarrollo continuo y que a la fecha de escribir este documento, soporta todas las características disponibles en la ultima versión de Nmap. Existen dos versiones que permiten operar con Python 3.x y Python 2.x, lo cual es importante tenerlo en cuenta a la hora de instalar dicha librería. Por otro lado, con esta librería es posible ejecutar escaneos de forma síncrona o asíncrona. Un escaneo síncrono, consiste simplemente en que python-nmap bloqueará el hilo de ejecución principal hasta que el escaneo finalice su ejecución. Un escaneo asíncrono ejecuta el escaneo Nmap en un nuevo hilo de ejecución y permite que el hilo principal siga ejecutándose. En un escaneo asíncrono, se permite la definición de una función de callback que será invocada de forma automática cuando se obtenga un resultado sobre alguno de los puertos analizados.
Para instalar la librería, se sigue el mismo procedimiento que muchas de las librerías disponibles para Python, consiste simplemente en ejecutar el script setup.py con el argumento install el  cual se encuentra ubicado en el directorio raíz del paquete descargado.
#python
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on
win32
Type “help”, “copyright”, “credits” or “license” for more information.
>>>import nmap
>>>nm = nmap.PortScanner()
>>>results = nm.scan(‘127.0.0.1’, ‘22,25,80,443’)
>>> nm.scaninfo()
{u’tcp’: {‘services’: u’22,25,80,443′, ‘method’: u’syn’}}
>>> nm.command_line()
u’nmap -oX – -p 21,22,25,80,443 -sV 127.0.0.1′
>>> nm.all_hosts()
[u’127.0.0.1′]
>>> print(nm.csv())
host;protocol;port;name;state;product;extrainfo;reason;version;conf
127.0.0.1;tcp;22;ssh;open;;;no-response;;3
127.0.0.1;tcp;25;smtp;unknown;;;no-response;;3
127.0.0.1;tcp;80;http;unknown;;;no-response;;3
127.0.0.1;tcp;443;https;unknown;;;no-response;;3
>>> nm[‘127.0.0.1’][‘tcp’][22][‘state’]
u’open’
>>> nm.all_hosts()
[u’127.0.0.1′]
>>> nm[‘127.0.0.1’][‘tcp’][22]
{‘state’: ‘open’, ‘reason’: ‘syn-ack’, ‘name’: ‘ssh’}

 

>>> results = nm.scan(‘88.12.45.12’, arguments=”-sSV -A -n -T2″)
>>> type(results)
<type ‘dict’>
>>> results[‘scan’].keys()
[u’88.12.45.12′]
>>> results = nm.scan(‘77.80.25.244’, arguments=”-sSV -A -n –source-port 88 -D 22.22.22.22,33.33.33.33,RND:4,ME“)
>>> type(results)
<type ‘dict’>
>>> results[‘scan’].keys()
[u’77.80.25.244′]
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s