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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 [2]
11  Programación / Ingeniería Inversa / Pregunta sencilla de ingeniería inversa - ¿Quién me da un consejo? en: 23 Julio 2016, 01:02 am
Hola compañeros!, para mí es un gusto saludar una comunidad con tantos aportes como esta.  :rolleyes:

Ahora bien al  grano…

He instalado un software que como medida de seguridad implementa validación de licencias mediante firma digital de la siguiente manera:

El programa constantemente realiza consultas a la base de datos que se instala junto con la distribución de dicho software, específicamente en la tabla "license" de dicha base de datos, este procedimiento VALIDA que nuestro software no esté toqueteado, y lo hace de la siguiente manera:

licensed_users   int(11)
license_id   char(36)
customer_id   char(100)
description   varchar(100)
email   char(100)
bo_type   varchar(64)

En los campos anteriores pertenecientes a la tabla "license" se captura información en el siguiente orden:

1.   Número de licencias a adquirir, por ejemplo yo adquiero 100, de ahí que el campo sea del tipo int(11)
2.   Identificador de licencias, es del tipo char(36)
3.   Identificador de cliente, es del tipo char(100)
4.   Descripcion, es del tipo varchar(100)
5.   Email, es del tipo char(100)
6.   bo_type, es del tipo varchar(64)

He aquí la parte interesante!!..!!..

El programa implementa una función, la cual utiliza TODAS las variables anteriores (campos) para aplicar un algoritmo (probablemente un algoritmo RSA) para obtener una firma y de esa manera VALIDAR, tanto el número de licencias (la parte más importante) como el resto de los datos, que para propósitos prácticos, son irrelevantes.

El resultado se almacena en el campo:

signature, y es del tipo varchar(172)

He estado revisando la base de datos que auto instala el software, y las llaves que se incluyen como ejemplo tienen una longitud exactamente de 172 caracteres:

algo más o menos así:

wxzqVSqFCC7QLjtLwBbXGYY6K77v37bZOW2HMfSCdmwh/qoFyFCvWwxzqVSqFCC7QLjtLwBk1fy3/jkO/bIEDDQxkLNtm5VRoBEWKkEJN0jRdGv3wxzqVSqFCC7QLjtLwBDe76hcuLE1hUetUhRK75JWwxzqVSqFCC7QLjtLwBg=

Me llama la atención que las firmas de ejemplo terminen en signo de igualdad, tuve la oportunidad de ver trabajando una llave genuina en mi lugar de trabajo, y su terminación es en signo de igualdad también...  ;D

La consulta que les hago es:  :huh: :huh: :huh:

¿Qué procedimiento o algoritmo podría yo usar para hacer pruebas con los datos de ejemplo que incluye el programa, esto, con la intención de conocer el procedimiento que los creadores del software usaron para implementar seguridad en el mismo. Y hacer mis propias llaves de prueba. Repito, se usan 6 elementos que combinados dan como resultado la llave de caracteres de 172 caracteres de longitud y terminada en signo de igualdad.  :o

La ingeniería del software es muy útil e interesante y si alguien pudiera ayudarme con alguna sugerencia de que algoritmo poder implementar, se lo agradecería demasiado.

Mis mejores deseos a todos en el foro.,
Gracias de antemano.
12  Programación / Ingeniería Inversa / Re: Herramientas en: 21 Julio 2016, 19:44 pm
Antes que nada saludos amigos,  :D

Mi duda es en cuanto a la herramienta: PE Editor v1.7

Ya la bajé pero está protegida por contraseña., Alguien de ustedes sabrá cual es la contraseña? Saludos!!

Morpheus  :rolleyes:
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines