#! /usr/bin/env python # -*- coding: utf-8 -*- #========================================================== # scanhost.py - script para el uso del módulo nmap #---------------------------------------------------------- # FJA - fja@neocipres.com Mayo de 2015 (17/12/15) #========================================================== import sys import argparse import nmap descripcion = ('%(prog)s es un ejemplo para el uso del módulo nmap') parser = argparse.ArgumentParser(description=descripcion) parser.add_argument('-H', '--host', \ help='IP del host a escanear, por defecto 127.0.0.1', \ type=str, default='127.0.0.1') parser.add_argument('-P', '--puerto', \ help='Puerto final de escaneo, por defecto es el 443', \ type=str, default='443') parser.add_argument('-p', '--ping', \ help='Activa el ping sobre la red', \ action='store_true', default=False) args = parser.parse_args() pts = '21-' + args.puerto try: nm = nmap.PortScanner() except nmap.PortScannerError: print('Nmap no encontrado', sys.exc_info()[0]) sys.exit(0) except: print("Error:", sys.exc_info()[0]) sys.exit(0) def raya(n, ca='='): rep = lambda p: p[0]*p[1] return rep((n, ca)) def scan(host, puertos): try: nm.scan(host, puertos) nm.command_line() nm.scaninfo() print '\n', raya(60, '#') print('Host : %s (%s)' % (host, nm[host].hostname())) print('Estado: %s' % nm[host].state()) print raya(60) for proto in nm[host].all_protocols(): print('Protocolo: %s' % proto) print raya(60, '-') lport = nm[host][proto].keys() lport.sort() for port in lport: print('puerto: %s\testado: %s' % \ (port, nm[host][proto][port]['state'])) print raya(60, '#'), '\n' except: print '\n\t' print 'Error: ', sys.exc_info()[0] sys.exit(0) def ping(host): hosts = host + '/24' try: nm.scan(hosts, arguments='-n -sP -PE -PA21,23,80,3389') hosts_list = [(x, nm[x]['status']['state']) for x in nm.all_hosts()] print '\n Comenzando ping a la red %s' % (hosts) print raya(60) for host, status in hosts_list: print('{0}: {1}'.format(host, status)) print raya(60, '#'), '\n' except: print '\n\t' print 'Error: ', sys.exc_info()[0] sys.exit(0) if __name__ == '__main__': scan(args.host, pts) if args.ping: ping(args.host)