PDA

Ver la versión completa : Sacar el algoritmo del generador de claves de un programa



Exchequer
29-08-2009, 11:34
Me gustaría saber si es factible sacar o deducir el algoritmo que usa el generador de claves o key generator de un programa, a través de un cierto número de claves válidas, comparando las claves entre sí buscando factores en común y de ahí sacar el algoritmo que usa el generador de claves para generar todas las claves válidas del programa.


Para que se entienda, pongo un ejemplo muy simple:

Para registrar un programa hay que introducir una clave que es un número del 0 al 9.

Se dispone de 3 claves que se ha comprobado que son válidas que son: 2, 6 y 8.

Comparando las claves válidas de las que disponemos se puede ver que todas las claves válidas son múltiplos del número 2, por lo que se puede deducir que el algoritmo del programa genera claves que son múltiplos del número 2, por lo que también serían claves válidas el 0 y el 4, se comprueba y así es.

Una vez se tiene el algoritmo se puede programar un generador de claves que genera de forma aleatoria claves válidas del 0 al 8 con las que poder registrar el programa.



Lo que me gustaría saber es si es factible llegar a los algoritmos complejos de los generadores de claves de los programas que generan claves del tipo "C6H28 R7F4C RQDV2 D8MCV TJKTW" de la misma forma, sin tener acceso a los archivos del programa, sólo comparando N claves válidas de las que disponemos.

Por factible entiendo que el cálculo de las comparaciones tarde horas o días, no meses ni años.

Giskard
29-08-2009, 20:47
Sacar algún algoritmo sólo conociendo su output requiere un gran ingenio e intuición. No conozco ningún "método" para hacerlo.

Un algoritmo Tn recibe un input 'm' para obtener un output 'p', es decir

Tn(m) = p (Definición clásica de una máquina de Turing)

Ahora bien, conociendo Tn y m es bien facil obtener p, incluso conociendo p y m en algunos casos es posible obtener Tn mediante procedimientos matemáticos. Pero si sólo conoces 'p' entonces la tienes difícil, dos máquinas de Turing diferentes pueden arrojar los mismos resultados durante una grande secuencia y no se sabrá que son distintas viendolas "desde fuera" hasta que se llegue a un resultado que lo demuestre.

Si lo logras entonces no olvides compartirnos tu hazaña. Saludos.

MCKSys
02-09-2009, 02:28
Eso!! Si lo logras, avisa por aqui.

A ver si puedo sacarle el jugo generando números para las tarjetas telefónicas !!

Je,je,je,je (era un chiste)

Es como dice Giskard, es ALTAMENTE improbable que puedas lograr obtener el algoritmo (aunque no imposible ;)

Saludos!

smaug_
02-09-2009, 10:24
El tipo de clave complejas, es bastante dificil de intuir, ya que normalmente, realizan diversas operaciones sobre la misma clave, por ejemplo, crear de los primeros 4 digitos aleatoriamente, luego realizar un hash de 8 digitos a partir de esos 4, y después realizan un xor entre los primeros digitos y su hash, para obtener los últimos 8. Es un ejemplo de lo complicado que podría ser la pass, a veces incluso depender de cosas como el número de serie del programa o los datos de la máquina en la que está instalada.
Por ello, la mejor opción, aparte de intentar adivinarlo por intuición, que es bastante complicado, yo me inclinaría por decompilar el programa, y hacer un debug para ver que ocurre con los datos paso a paso, de esa forma es relativamente más facil, encontrar el algoritmo de codificación para la clave.

Giskard
02-09-2009, 18:47
Completamente de acuerdo, es relativamente más fácil hacerle ingeniería inversa al ejecutable que deducir el algoritmo viendo sólamente el output.

Saludos.

luffy
03-11-2009, 06:54
Hola soy nuevo y comienzo en esto se lo basico y kisiera alguien k me ayude en este camino :D y bueno les dejo mi msn para k me agreguen y poder preguntarle y me ayuden gracias a toos los interesados y saludos a toosss