elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Juego ejercicios [Python]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 Ir Abajo Respuesta Imprimir
Autor Tema: Juego ejercicios [Python]  (Leído 105,759 veces)
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #90 en: 7 Enero 2010, 17:10 pm »

Nueva consulta ... el rango de IP que formato lleva?
Cualquiera de estos?

Citar
127.0.0.1/127.0.0.255
127.0.0.1/127.120.250.255
127.0.0.1/64
127.0.0.1/255.255
127.0.0.1/127.0.1.255

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Masita

Desconectado Desconectado

Mensajes: 120


pythoneando


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #91 en: 7 Enero 2010, 17:14 pm »

En mi caso ingreso primero una de las ip en este formato 127.0.0.1  y despues pido la siguiente con el mismo formato. Por ejemplo 128.0.0.1 ( lo unico es que con este rango tardaria eones en terminar el scaneo ) Tu utiliza el formato que desees.


En línea

En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #92 en: 7 Enero 2010, 23:41 pm »

El ejercicio anterior :P

Código
  1. import http.client
  2.  
  3. def NextIP(rango):
  4.            rango = rango.split('.')
  5.            for i in range(len(rango)-1,-1,-1):
  6.                        if(int(rango[i]) < 255):
  7.                                   rango[i] = str(int(rango[i]) + 1)
  8.                                   break
  9.                        else:
  10.                                   rango[i] = '0'
  11.            return '.'.join(rango)
  12.  
  13. def ServerinIPRange(strRange):
  14.            RIPs = strRange.split('/')
  15.            sIPstr = RIPs[0]
  16.            eIP = RIPs[1].split('.')
  17.            eIP = sIPstr.split('.')[:-len(eIP)] + eIP
  18.            eIPstr = '.'.join(eIP)
  19.            ShoWebServer(sIPstr)
  20.            while(sIPstr != eIPstr):
  21.                        sIPstr  = NextIP(sIPstr)
  22.                        ShoWebServer(sIPstr)
  23.  
  24. def ShoWebServer(URLIP):
  25.            try:
  26.                        conn = http.client.HTTPConnection(URLIP,timeout=5)
  27.                        conn.request("GET", "/index.html")
  28.                        r = conn.getresponse()
  29.                        print(URLIP,r.getheader('Server'))
  30.            except:
  31.                        print(URLIP,'Server not found')
  32.            finally:
  33.                        conn.close()
  34.  
  35. try:
  36.    iprange = input("Ingrese un rago de IP (ej: 200.3.25.1/26.255): ")
  37.    ServerinIPRange(iprange)
  38. except:
  39.    print("El rango de IP ingresado no es válido")

Para quienes usan Python 2.6 hay que modificar el script, ya que la librería a importar es la httplib

Una muestra de la salida:
Citar
>>>
Ingrese un rago de IP (ej: 200.3.25.1/200.3.25.255): 207.46.192.250/193.1
207.46.192.250 Server not found
207.46.192.251 Server not found
207.46.192.252 Server not found
207.46.192.253 Microsoft-IIS/7.5
207.46.192.254 Microsoft-IIS/7.5
207.46.192.255 Server not found
207.46.193.0 Server not found
207.46.193.1 Server not found
>>>


Tener en cuenta que el script tiene configurado un timeout de 5 segundos (tiempo que demora en "decidir" si un host es inaccesible o no), y que no se verifica que el rango hasta sea mayor que el inicio, por lo que si nos equivocamos queda en un bucle infinito :silbar:

Ultima nota: los headers que muestra el servidor se pueden modificar, así que no es raro ver algunos extraños, como el gws para google

Saludos

[Edito]
Le bajé el timeout de 10 a 5 segundos
« Última modificación: 8 Enero 2010, 00:20 am por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Masita

Desconectado Desconectado

Mensajes: 120


pythoneando


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #93 en: 8 Enero 2010, 00:02 am »

 ;-) Cada vez que veo uno de tus codigos me doy cuenta de todo lo que falta por aprender.... Aqui dejo lo que habia conseguido hacer yo. Es bastante menos legible y muchisimo mas largo xDD

Código
  1. import socket
  2. def rango(): #Recoge el rango de ip
  3. while True:
  4. a = (raw_input("introduzca primera ip:  "))
  5. b = (raw_input("introduzca segunda ip:  "))
  6. c=b
  7. a, b = a.replace("."," "), b.replace("."," ")
  8. try:
  9. int(a.replace(" ",""))
  10. int(b.replace(" ",""))
  11.  
  12. a, b = a.split(), b.split()
  13. return a,b,c
  14. except:
  15. print "El rango ip introducido no es valido"
  16. def listaip(): #Genera una lista con todas las ip en el rango
  17. aux=[]
  18. ip = []
  19. a, b, c = rango()
  20. a1, a2, a3, a4 = int(a[0]), int(a[1]), int(a[2]), int(a[3])
  21. b1, b2, b3, b4 = int(b[0]), int(b[1]), int(b[2]), int(b[3])
  22. while True:
  23. while a1 != 255:
  24. while a2 != 255:
  25. while a3 != 255:
  26. while a4 != 255:
  27. aux=[]
  28. aux.append(str(a1))
  29. aux.append(str(a2))
  30. aux.append(str(a3))
  31. aux.append(str(a4))
  32. aux = (".".join(aux))
  33. ip.append(aux)
  34. a4 +=1
  35. if aux == c:
  36. return ip
  37. aux=[]
  38. aux.append(str(a1))
  39. aux.append(str(a2))
  40. aux.append(str(a3))
  41. aux.append(str(a4))
  42. aux = (".".join(aux))
  43. ip.append(aux)
  44. a4 = 0
  45. a3 +=1
  46. if aux == c:
  47. return ip
  48. aux=[]
  49.  
  50. aux.append(str(a1))
  51. aux.append(str(a2))
  52. aux.append(str(a3))
  53. aux.append(str(a4))
  54. aux = (".".join(aux))
  55. ip.append(aux)
  56. a4 = 0
  57. a3 = 0
  58. a2 +=1
  59. if aux == c:
  60. return ip
  61. aux=[]
  62. aux.append(str(a1))
  63. aux.append(str(a2))
  64. aux.append(str(a3))
  65. aux.append(str(a4))
  66. aux = (".".join(aux))
  67. ip.append(aux)
  68. a4 = 0
  69. a3 = 0
  70. a2 = 0
  71. a1 +=1
  72. if aux == c:
  73. return ip
  74. def soc(host):
  75. try:
  76. s=socket.socket()
  77. s.settimeout(0.1)
  78. s.connect((host,80))
  79. s.send("HEAD / HTTP/1.1\n\n")
  80. f=s.recv(3000)
  81. s.close()
  82. return f
  83. except:
  84. return False
  85. def comparar(cabecera,servidor):
  86. x = cabecera.find(servidor)
  87. if x != -1:
  88. return True
  89. else:
  90. return False
  91. def gen(ips):
  92. coincidencias = []
  93. indice = 0
  94. for i in ips:
  95. try:
  96. y = soc(i)
  97. if comparar(y,x):
  98. print "Servidor encontrado en: ", i
  99. coincidencias.append(i)
  100. indice +=1
  101. else:
  102. print i
  103. except:
  104. print "Ningun servidor web en: ", i
  105. continue
  106. return coincidencias
  107. #Main
  108. print "######################################"
  109. print "  Buscador de cadenas en headers http"
  110. print "######################################\n"
  111. x = raw_input("Introduzca el servidor a buscar:"  )
  112. ips = listaip()
  113. print "Empezando escaneo"
  114. coin = gen(ips)
  115. print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
  116. print "Un total de %d servidores detectados: " % (len(coin))
  117. for i in coin:
  118. print "Servidor encontrado en: ", i
  119.  

Y su salida

Código:
[Masita@Hartigan Documentos]$ python ip.py
######################################
  Buscador de cadenas en headers http
######################################

Introduzca el servidor a buscar:Apache/2.2.13
introduzca primera ip:  212.92.50.9
introduzca segunda ip:  212.92.50.18
Empezando escaneo
Servidor encontrado en:  212.92.50.9
212.92.50.10
212.92.50.11
Ningun servidor web en:  212.92.50.12
.....
.....
Un total de 1 servidores detectados:
Servidor encontrado en:  212.92.50.9

Siguiente ejercicio!
En línea

En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #94 en: 8 Enero 2010, 00:17 am »

Aaaah, había que ingresar además el tipo de servidor :P

Igual esta muy bien, yo también inicie con los muchos while e if, pero luego encontre la manera de optimizarlo.

En principio también me había planteado retornar una lista con las IP dentro del rango, tal y como hace tu función rango(), pero luego lo deje de lado porque si se ingresa un rango demasiado extenso entonces se carga mucho en memoria, aunque hacer eso es lo mejor y más "correcto", porque de ese modo se separa realmente las dos funciones y se pueden reutilizar mejor a la hora de pasarlas a otro code, pero bueno, eso se cambia con solo agregar una lista y cambiar el return ;D

Debo de decir que también había comenzado el script con sockets, pero luego recorde las otras librerías, que de por si tienen funciones para retornar los headers.

En resumen, bien hecho! ;)

Voy a ver que planteo para el siguiente ejercicio ....
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Masita

Desconectado Desconectado

Mensajes: 120


pythoneando


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #95 en: 8 Enero 2010, 01:01 am »

Lo del socket lo intente primero busque si se podia hacer con urllib, pero como no me aceptaba ip's decidi hacerle la peticion de forma manual. Buscare info sobre esas librerias por que sabia que existian pero no se me ocurrio usarlas.

Gracias por la valoracion  ;D
En línea

En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #96 en: 8 Enero 2010, 02:13 am »

Ahora si ;D

Es relativamente sencillo, para que quienes no han podido con estos, intenten con este otro ..

"Crear un script por medio del cual:
  • El usuario ingrese el nombre de una imagen
  • Se busque imagenes en google según lo ingresado por el usuario
  • Se descargue todos los thumbnails que aparecen en la primera página de coincidencias a un directorio por defecto (a criterio del programador)"
Ej de búsqueda:
google.es ---> http://images.google.es/images?hl=es&source=hp&q=elhacker.net&um=1&ie=UTF-8&sa=N&tab=wi&gbv=1&ei=_4VGS_vpJ8yVtgefnqHwAQ (url ejemplo con imagenes). Se deben de almacenar esas imagenes pequeñas.

[Edito]
Por como muestra los resultados google, con que sean 10 imagenes descargadas alcanza :P

Saludos

« Última modificación: 8 Enero 2010, 11:46 am por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
CaronteGold


Desconectado Desconectado

Mensajes: 339



Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #97 en: 8 Enero 2010, 06:03 am »

-


  No sé si funcionará porque no tengo el intérprete para probarlo, y hasta hoy por la noche creo que no podré entrar de nuevo.

   Me basé en algo que ví en una web, así que no estoy 100% seguro.

Código
  1. import httplib
  2. a = "www.google.es"
  3. part1 = "/images?gbv=2&hl=en&sa=1&q="
  4. part2 = "&btnG=Search&aq=f&oq=&start=0"
  5. b = raw_input("Fotos a buscar: ")
  6. c = part1+b+part2
  7.  
  8. conexion = httplib.HTTPConnection(a)
  9. conexion.request ("GET", c)
  10. d = conexion.getresponse()
  11. directorio = file( "C:\Python", "wb" )
  12. directorio.write(d.read())
  13. directorio.close()
  14.  
   
  EDITO:

 No funciona, al final fui a clase y me echaron porque está nevando, ( que suerte  :P ) , así que puedo conectarme, voy a intentar el code..  ;D ;D ;D.


   Saludos.





« Última modificación: 8 Enero 2010, 09:10 am por CaronteGold » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #98 en: 8 Enero 2010, 13:56 pm »

Me cachis!  >:(

No hay manera de que me tire lo que busco! pensé que quizás google había cambiado la manera en la que muestra resultados (y no eran accesibles), pero acabo de probar con otro lenguaje (vbs) y no tengo problemas en listar las imagenes!, pero en este caso, ponga lo que le ponga (cambiando user-agent y demás) me sigue pateando con un error 403!

Arghhhhh  >:(
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Masita

Desconectado Desconectado

Mensajes: 120


pythoneando


Ver Perfil
Re: Juego ejercicios [Python]
« Respuesta #99 en: 8 Enero 2010, 16:42 pm »

Yo estoy fuera todo el finde asi que me imagino que cuando vuelva ya estara resuelto. Aunque cuando vuelva lo intento que me parece bastante interesante.
En línea

En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Reto/Juego Ejercicios en Python « 1 2 3 4 5 »
Ejercicios
Novlucker 47 34,071 Último mensaje 20 Diciembre 2010, 06:47 am
por [L]ord [R]NA
ejercicios en python
Scripting
ramontxu 2 3,423 Último mensaje 15 Diciembre 2011, 21:56 pm
por ramontxu
Ejercicios python con solucion
Programación General
bichotg 0 2,705 Último mensaje 17 Febrero 2012, 00:33 am
por bichotg
ejercicios con while y for en python
Scripting
jasson94 3 10,158 Último mensaje 26 Octubre 2012, 22:52 pm
por jasson94
Ayuda ejercicios de python
Scripting
jasson94 2 3,527 Último mensaje 30 Octubre 2012, 01:39 am
por jasson94
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines