Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.
Autor
|
Tema: Juego ejercicios [Python] (Leído 30,526 veces)
|
Novlucker
Ninja y
Ex-Staff
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
Nueva consulta ... el rango de IP que formato lleva? Cualquiera de estos? 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 http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Masita
Desconectado
Mensajes: 114
pythoneando
|
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
Ex-Staff
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
El ejercicio anterior  import http.client def NextIP(rango): rango = rango.split('.') for i in range(len(rango)-1,-1,-1): if(int(rango[i]) < 255): rango[i] = str(int(rango[i]) + 1) break else: rango[i] = '0' return '.'.join(rango) def ServerinIPRange(strRange): RIPs = strRange.split('/') sIPstr = RIPs[0] eIP = RIPs[1].split('.') eIP = sIPstr.split('.')[:-len(eIP)] + eIP eIPstr = '.'.join(eIP) ShoWebServer(sIPstr) while(sIPstr != eIPstr): sIPstr = NextIP(sIPstr) ShoWebServer(sIPstr) def ShoWebServer(URLIP): try: conn = http.client.HTTPConnection(URLIP,timeout=5) conn.request("GET", "/index.html") r = conn.getresponse() print(URLIP,r.getheader('Server')) except: print(URLIP,'Server not found') finally: conn.close() try: iprange = input("Ingrese un rago de IP (ej: 200.3.25.1/26.255): ") ServerinIPRange(iprange) except: 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 httplibUna muestra de la salida: >>> 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  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 por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Masita
Desconectado
Mensajes: 114
pythoneando
|
 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 import socket def rango(): #Recoge el rango de ip while True: a = (raw_input("introduzca primera ip: ")) b = (raw_input("introduzca segunda ip: ")) c=b a, b = a.replace("."," "), b.replace("."," ") try: int(a.replace(" ","")) int(b.replace(" ","")) a, b = a.split(), b.split() return a,b,c except: print "El rango ip introducido no es valido" def listaip(): #Genera una lista con todas las ip en el rango aux=[] ip = [] a, b, c = rango() a1, a2, a3, a4 = int(a[0]), int(a[1]), int(a[2]), int(a[3]) b1, b2, b3, b4 = int(b[0]), int(b[1]), int(b[2]), int(b[3]) while True: while a1 != 255: while a2 != 255: while a3 != 255: while a4 != 255: aux=[] aux.append(str(a1)) aux.append(str(a2)) aux.append(str(a3)) aux.append(str(a4)) aux = (".".join(aux)) ip.append(aux) a4 +=1 if aux == c: return ip aux=[] aux.append(str(a1)) aux.append(str(a2)) aux.append(str(a3)) aux.append(str(a4)) aux = (".".join(aux)) ip.append(aux) a4 = 0 a3 +=1 if aux == c: return ip aux=[] aux.append(str(a1)) aux.append(str(a2)) aux.append(str(a3)) aux.append(str(a4)) aux = (".".join(aux)) ip.append(aux) a4 = 0 a3 = 0 a2 +=1 if aux == c: return ip aux=[] aux.append(str(a1)) aux.append(str(a2)) aux.append(str(a3)) aux.append(str(a4)) aux = (".".join(aux)) ip.append(aux) a4 = 0 a3 = 0 a2 = 0 a1 +=1 if aux == c: return ip def soc(host): try: s=socket.socket() s.settimeout(0.1) s.connect((host,80)) s.send("HEAD / HTTP/1.1\n\n") f=s.recv(3000) s.close() return f except: return False def comparar(cabecera,servidor): x = cabecera.find(servidor) if x != -1: return True else: return False def gen(ips): coincidencias = [] indice = 0 for i in ips: try: y = soc(i) if comparar(y,x): print "Servidor encontrado en: ", i coincidencias.append(i) indice +=1 else: print i except: print "Ningun servidor web en: ", i continue return coincidencias #Main print "######################################" print " Buscador de cadenas en headers http" print "######################################\n" x = raw_input("Introduzca el servidor a buscar:" ) ips = listaip() print "Empezando escaneo" coin = gen(ips) print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" print "Un total de %d servidores detectados: " % (len(coin)) for i in coin: print "Servidor encontrado en: ", i Y su salida [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
Ex-Staff
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
Aaaah, había que ingresar además el tipo de servidor 
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  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 http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Masita
Desconectado
Mensajes: 114
pythoneando
|
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 
|
|
|
|
|
En línea
|
En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....
|
|
|
Novlucker
Ninja y
Ex-Staff
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
Ahora si  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  Saludos
|
|
|
|
« Última modificación: 8 Enero 2010, 11:46 por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
CaronteGold
Desconectado
Mensajes: 337
|
- 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. import httplib a = "www.google.es" part1 = "/images?gbv=2&hl=en&sa=1&q=" part2 = "&btnG=Search&aq=f&oq=&start=0" b = raw_input("Fotos a buscar: ") c = part1+b+part2 conexion = httplib.HTTPConnection(a) conexion.request ("GET", c) d = conexion.getresponse() directorio = file( "C:\Python", "wb" ) directorio.write(d.read()) directorio.close() EDITO: No funciona, al final fui a clase y me echaron porque está nevando, ( que suerte  ) , así que puedo conectarme, voy a intentar el code..  . Saludos.
|
|
|
|
« Última modificación: 8 Enero 2010, 09:10 por CaronteGold »
|
En línea
|
|
|
|
Novlucker
Ninja y
Ex-Staff
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
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 http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Masita
Desconectado
Mensajes: 114
pythoneando
|
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....
|
|
|
CaronteGold
Desconectado
Mensajes: 337
|
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  Yo seguiré intentando a ver...., creo que será con el módulo urllib ¿?, lol como mola este emoticono ---> 
|
|
|
|
|
En línea
|
|
|
|
braulio--
Wiki
Desconectado
Mensajes: 889
Imagen recursiva
|
Yo me pondré a intentarlo esta noche  es verdad, si que mola.
|
|
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Ex-Staff
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
jaja, ya lo tengo terminado, el problema era que estaba generando mal la consulta con urllib, lo raro es que si bien estaba pasando parámetros equivocados a la función urlopen no me pateaba eso, sino un error 403 (igual eran dos problemas separados)  Otra cosa ... desde ya les digo que deben de cambiar el user-agent al hacer el GET a google, porque el user-agent por defecto de urllib/urllib2 es "Python-urllib/2.6/3.1", y a google no le gusta  :http://www.user-agents.org/ [Edito]Debo de agregar además, que si bien no es "difícil", como que tampoco es muy sencillo para los que comienzan  (era mi idea inicial) Saludos
|
|
|
|
« Última modificación: 9 Enero 2010, 03:32 por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
|
|
braulio--
Wiki
Desconectado
Mensajes: 889
Imagen recursiva
|
No, al hacer urlopen no te devuelve el source, te devuelve un objeto. Lo que te devuelve el source es el método .read() de ese objeto. Yo ahora mismo estoy en windows por qué la lié con linux y no voy a poder hacer nada, aunque de todas formas lo acabaré haciendo.
|
|
|
|
|
En línea
|
|
|
|
|
|