Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: 0x5d en 2 Julio 2011, 13:48 pm



Título: [Utilidad]Usando NMAP en Python
Publicado por: 0x5d en 2 Julio 2011, 13:48 pm
Bueno, navegando por la red, me topé con NMAP para Python.
se usaría igual
Código
  1. import nmap
La pueden descargar desde acá para versiones 3.X: http://xael.org/norman/python/python-nmap/python-nmap-0.2.2.tar.gz
Y de Acá para las 2.X :http://xael.org/norman/python/python-nmap/python-nmap-0.1.4.tar.gz
Luego descomprimir :
Código:
tar xvzf python-nmap-0.2.0.tar.gz
hacemos CD a la carpeta creada.
Luego
Código:
python setup.py install
Una vez hecho esto podemos utilizarla así
Código
  1. import nmap
  2.  
Algunos ejemplos de su uso :
Código
  1. >>> import nmap
  2. >>> nm = nmap.PortScanner()
  3. >>> nm.scan('127.0.0.1', '22-443')
  4. >>> nm.command_line()
  5. 'nmap -oX - -p 22-443 -sV 127.0.0.1'
  6. >>> nm.scaninfo()
  7. {'tcp': {'services': '22-443', 'method': 'connect'}}
  8. >>> nm.all_hosts()
  9. ['127.0.0.1']
  10. >>> nm['127.0.0.1'].hostname()
  11. 'localhost'
  12. >>> nm['127.0.0.1'].state()
  13. 'up'
  14. >>> nm['127.0.0.1'].all_protocols()
  15. ['tcp']
  16. >>> nm['127.0.0.1']['tcp'].keys()
  17. [80, 25, 443, 22, 111]
  18. >>> nm['127.0.0.1'].has_tcp(22)
  19. True
  20. >>> nm['127.0.0.1'].has_tcp(23)
  21. False
  22. >>> nm['127.0.0.1']['tcp'][22]
  23. {'state': 'open', 'reason': 'syn-ack', 'name': 'ssh'}
  24. >>> nm['127.0.0.1'].tcp(22)
  25. {'state': 'open', 'reason': 'syn-ack', 'name': 'ssh'}
  26. >>> nm['127.0.0.1']['tcp'][22]['state']
  27. 'open'
  28.  
  29. >>> for host in nm.all_hosts():
  30. >>>     print('----------------------------------------------------')
  31. >>>     print('Host : %s (%s)' % (host, nm[host].hostname()))
  32. >>>     print('State : %s' % nm[host].state())
  33. >>>     for proto in nm[host].all_protocols():
  34. >>>         print('----------')
  35. >>>         print('Protocol : %s' % proto)
  36. >>>
  37. >>>         lport = nm[host][proto].keys()
  38. >>>         lport.sort()
  39. >>>         for port in lport:
  40. >>>             print ('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))
  41. ----------------------------------------------------
  42. Host : 127.0.0.1 (localhost)
  43. State : up
  44. ----------
  45. Protocol : tcp
  46. port : 22 state : open
  47. port : 25 state : open
  48. port : 80 state : open
  49. port : 111 state : open
  50. port : 443 state : open
  51.  
  52.  
  53.  
  54. >>> nm.scan(hosts='192.168.1.0/24', arguments='-n -sP -PE -PA21,23,80,3389')
  55. >>> hosts_list = [(x, nm[x]['status']['state']) for x in nm.all_hosts()]
  56. >>> for host, status in hosts_list:
  57. >>>     print('{0}:{1}'.format(host, status))
  58. 192.168.1.0:down
  59. 192.168.1.1:up
  60. 192.168.1.10:down
  61. 192.168.1.100:down
  62. 192.168.1.101:down
  63. 192.168.1.102:down
  64. 192.168.1.103:down
  65. 192.168.1.104:down
  66. 192.168.1.105:down
  67. [...]
  68.  
  69.  
  70.  
  71. >>> nma = nmap.PortScannerAsync()
  72. >>> def callback_result(host, scan_result):
  73. >>>     print '------------------'
  74. >>>     print host, scan_result
  75. >>>
  76. >>> nma.scan(hosts='192.168.1.0/30', arguments='-sP', callback=callback_result)
  77. >>> while nma.still_scanning():
  78. >>>     print("Waiting >>>")
  79. >>>     nma.wait(2)   # you can do whatever you want but I choose to wait after the end of the scan
  80. >>>
  81. 192.168.1.1 {'nmap': {'scanstats': {'uphosts': '1', 'timestr': 'Mon Jun  7 11:31:11 2010', 'downhosts': '0', 'totalhosts': '1', 'elapsed': '0.43'}, 'scaninfo': {}, 'command_line': 'nmap -oX - -sP 192.168.1.1'}, 'scan': {'192.168.1.1': {'status': {'state': 'up', 'reason': 'arp-response'}, 'hostname': 'neufbox'}}}
  82. ------------------
  83. 192.168.1.2 {'nmap': {'scanstats': {'uphosts': '0', 'timestr': 'Mon Jun  7 11:31:11 2010', 'downhosts': '1', 'totalhosts': '1', 'elapsed': '0.29'}, 'scaninfo': {}, 'command_line': 'nmap -oX - -sP 192.168.1.2'}, 'scan': {'192.168.1.2': {'status': {'state': 'down', 'reason': 'no-response'}, 'hostname': ''}}}
  84. ------------------
  85. 192.168.1.3 {'nmap': {'scanstats': {'uphosts': '0', 'timestr': 'Mon Jun  7 11:31:11 2010', 'downhosts': '1', 'totalhosts': '1', 'elapsed': '0.29'}, 'scaninfo': {}, 'command_line': 'nmap -oX - -sP 192.168.1.3'}, 'scan': {'192.168.1.3': {'status': {'state': 'down', 'reason': 'no-response'}, 'hostname': ''}}}
  86.  
Fuente(en inglés):http://xael.org/norman/python/python-nmap/


Saludos :D


Título: Re: [Utilidad]Usando NMAP en Python
Publicado por: WaAYa HaCK en 2 Julio 2011, 15:30 pm
 ;-) ;-) Genial aporte!

Se me ocurren muchas cosas...  :rolleyes:

Gracias!  :D


Título: Re: [Utilidad]Usando NMAP en Python
Publicado por: zZznewbiezZz en 9 Julio 2011, 20:32 pm
pero y si tengo windows???
por cierto  que hace exactamente?
gracias de antemano ;D


Título: Re: [Utilidad]Usando NMAP en Python
Publicado por: WaAYa HaCK en 9 Julio 2011, 20:56 pm
Nmap es un escaneador de hosts muy bueno. Esta libreria hace posible su implementacion en Python. En Windows debes tener el interprete de Python instalado.