Autor
|
Tema: Juego ejercicios [Python] (Leído 110,822 veces)
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
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 "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Masita
Desconectado
Mensajes: 120
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
Colaborador
Desconectado
Mensajes: 10.683
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 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
Mensajes: 120
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
Colaborador
Desconectado
Mensajes: 10.683
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 "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Masita
Desconectado
Mensajes: 120
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
Colaborador
Desconectado
Mensajes: 10.683
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 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
Mensajes: 339
|
- 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 am por CaronteGold »
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
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 "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Masita
Desconectado
Mensajes: 120
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....
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Reto/Juego Ejercicios en Python
« 1 2 3 4 5 »
Ejercicios
|
Novlucker
|
47
|
35,696
|
20 Diciembre 2010, 06:47 am
por [L]ord [R]NA
|
|
|
ejercicios en python
Scripting
|
ramontxu
|
2
|
3,711
|
15 Diciembre 2011, 21:56 pm
por ramontxu
|
|
|
Ejercicios python con solucion
Programación General
|
bichotg
|
0
|
2,929
|
17 Febrero 2012, 00:33 am
por bichotg
|
|
|
ejercicios con while y for en python
Scripting
|
jasson94
|
3
|
10,629
|
26 Octubre 2012, 22:52 pm
por jasson94
|
|
|
Ayuda ejercicios de python
Python
|
jasson94
|
2
|
3,913
|
30 Octubre 2012, 01:39 am
por jasson94
|
|