Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Exe U. en 17 Enero 2011, 11:08 am



Título: [Python] Scaner de Puertos
Publicado por: Exe U. en 17 Enero 2011, 11:08 am
Hace poco empece con Python. Este vendria hacer el primer code serio que hago =P supongo que todavia se puede mejorar =P
Sobre el scaner scanea por rangos y lista de puertos.

Código
  1. #!/usr/bin/python2
  2. import socket, sys, string
  3. if len(sys.argv)!=3 or sys.argv[1]=="-h":
  4. print "Escaner de puerto by Exe U.\n"
  5. print "Sintaxis> [HOST] [PUERTO/S]\n"
  6. print  sys.argv[0] + " localhost 1-80"
  7. print  sys.argv[0] + " localhost 21,22,23,25,110"
  8. print  sys.argv[0] + " localhost 80"
  9. sys.exit()
  10. host = sys.argv[1]
  11. puertos = sys.argv[2]
  12. #Escaneo por rangos
  13. if string.find(puertos, "-") >= 1:
  14. puertos = puertos.split("-")
  15. for puerto in range(int(puertos[0]), int(puertos[1]) +1):
  16. try:
  17. sc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  18.   sc.connect((host,puerto))
  19.   print "Puerto %d" % puerto + " abierto"
  20. sc.close()
  21. except:
  22. pass
  23. #Escanea una lista de puertos
  24. elif string.find(puertos, ",") >= 1:
  25. puertos = puertos.split(",")
  26. for puerto in puertos:
  27. try:
  28. sc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  29.   sc.connect((host, int(puerto)))
  30.   print "Puerto " + puerto + " abierto"
  31. sc.close()
  32. except:
  33. pass
  34. #Escanea un solo puerto
  35. elif puertos.isdigit():
  36. try:
  37. sc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  38. sc.connect((host, int(puertos)))
  39. print "Puerto " + puertos + " abierto"
  40. sc.close()
  41. except:
  42. pass

Salu2