Foros del Web » Programando para Internet » Python »

programa para descifrar uncodigo

Estas en el tema de programa para descifrar uncodigo en el foro de Python en Foros del Web. hola, hace poco estaba aburrido así que decidí hacer un programa escrito en python que pudiera descifrar un código o clave, y lo hice, el ...
  #1 (permalink)  
Antiguo 27/09/2012, 11:34
 
Fecha de Ingreso: septiembre-2012
Mensajes: 4
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta programa para descifrar uncodigo

hola, hace poco estaba aburrido así que decidí hacer un programa escrito en python que pudiera descifrar un código o clave, y lo hice, el problema es que imprime un millón de lineas hasta hallar el código, y aveces siquiera lo encuentra después de 10 minutos, claro, si el código es demasiado largo, este es el código del programa:

Código Python:
Ver original
  1. from random import *
  2. print "programa para hallar un código"
  3. print ""
  4. code=[0x25,0xa3,0x73,0x42,0x25]
  5. x=True
  6. while x==True:
  7.     mesage=[hex(getrandbits(4)),hex(getrandbits(4)),hex(getrandbits(4)),hex(getrandbits(4)),hex(getrandbits(4)),]
  8.     if mesage !=code:
  9.         print mesage
  10.         print"codigo erroneo"
  11.     if mesage==code:
  12.         print"codigo encontrado: ",code

bastante simple, pero me gustaría saber si hay alguna forma de hacer que si el programa "adivina" uno de los dígitos de "code" ese quede almacenado en el lugar correspondiente en la variable"mesage" para que al siguiente "intento" deba adivinar menos dígitos y el proceso sea mas rápido.

si existe alguna forma o método para hacer eso, agradecería si me lo pudieran decir,gracias

Última edición por razpeitia; 27/09/2012 a las 12:04
  #2 (permalink)  
Antiguo 27/09/2012, 12:27
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: programa para descifrar uncodigo

Dudo que tu programa algún día termine por los siguientes detalles:
1.- hex() devuelve un string y estas comparando strings con enteros.
2.- getrandbits(4) no cubre todo tu espacio de busqueda. Por ejemplo getrandbits(4) va a buscar entre 0x00 y 0x0F
3.- Incluso si arreglas esto, sera tremendamente lento por que el generador tiende a darte valores repetidos.
4.- Tu campo de búsqueda es muy pequeño (0 a 255 o de 0x00 a 0xFF) es mejor hacer una búsqueda lineal.
5.- Como ya tienes el código no veo algún punto en tratar de adivinarlo.

Código Python:
Ver original
  1. from random import *
  2.  
  3. code = [0x25, 0xa3, 0x73, 0x42, 0x25]
  4. message = []
  5.  
  6. for byte in code:
  7.     for attemp_byte in range(256):
  8.         if byte == attemp_byte:
  9.             message.append(attemp_byte)
  10.             break
  11. print message

Etiquetas: modulo_random
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:24.