11 ene. 2015

Descubrir equipos en una red con ipcalc y python-nmap

En un artículo anterior se explico como descubrir equipos en una red usando ipcalc y scapy, ahora se explicará usando python-nmap.


El script pasa la red y mascara de la red que se va a analizar, se define unos puertos de los cuales se quiere saber si están abiertos y se usa la librería nmap con unos argumentos para detectar los host de la red.

A continuación el código del script:

#!/usr/bin/env python2.7
#se importa python-nmap
import nmap
#De ipcalc se importa IP y Network
from ipcalc import IP, Network
#Se crea la instancia de nmap para escanear puertos
escanear = nmap.PortScanner()
#Se define una tupla con los puertos
puertos = ("21","22","25","53","80")
#Se define los argumentos que nmap va a utilizar
argumentos = "-sS -sV -O"
#Se crea la función escaneo donde se le pasa los host y puertos.
def Escaneo(host,puertos):
    #Se hace un recorrido por puerto 
    for puerto in puertos:
        try:
            #Se verifica que el puerto esté abierto en el host
            #Si lo está se muestra, si no se continua con el siguiente puerto.
            escanear.scan(host,puerto,argumentos)
            if escanear[host]['tcp'][int(puerto)]['state'] == "open":
                print("Host: %s ,Puerto: %s, abierto" %(host,puerto))
        except KeyError:
            pass
if __name__ == "__main__":
    import sys
    try:
        #Escaneo(hosts,puertos)
       #Se recorre los host de la red, y se llama a la función escaneo que evalua que puertos están abiertos
       #en cada host.
        for x in Network('192.168.52.0/24'):
            host =str(x)
            Escaneo(host,puertos)
    except KeyboardInterrupt:
        sys.exit()

El resultado de ejecutar el script es el siguiente:

Host: 192.168.52.2 ,Puerto: 22, abierto
Host: 192.168.52.2 ,Puerto: 53, abierto
Host: 192.168.52.9 ,Puerto: 22, abierto
Host: 192.168.52.9 ,Puerto: 53, abierto
Host: 192.168.52.17 ,Puerto: 22, abierto
Host: 192.168.52.17 ,Puerto: 53, abierto
Host: 192.168.52.33 ,Puerto: 22, abierto
Host: 192.168.52.33 ,Puerto: 53, abierto
Host: 192.168.52.65 ,Puerto: 22, abierto
Host: 192.168.52.65 ,Puerto: 53, abierto
...


Publicar un comentario en la entrada

AddThis