Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: MaLkAvIaN_NeT en 3 Noviembre 2015, 03:18 am



Título: algoritmo de desencriptación
Publicado por: MaLkAvIaN_NeT en 3 Noviembre 2015, 03:18 am
Buenas noches tengo que acceder a un sistema VFP del cual no tienen la clave, entré a las tablas usuario y la clave se encuentra cifrada con un algoritmo que no es md5, sha1, etc.

La contraseña cifrada es la siguiente:
Citar
ø»ôj̇

Eh decompilado el .EXE y he encontrado la función cifrar:
Código
  1. PARAMETER dato, encript, long
  2. peso = CHR(57) + CHR(51) + CHR(53) + CHR(49) + CHR(52) + CHR(50) + CHR(47) + CHR(41) + CHR(73) + CHR(99) + CHR(62) + CHR(70) + CHR(57) + CHR(51) + CHR(53) + CHR(49) + CHR(52) + CHR(50) + CHR(33) + CHR(14) + CHR(31) + CHR(90) + CHR(67) + CHR(51) + CHR(56) + CHR(90) + CHR(51) + CHR(54) + CHR(43) + CHR(74) + CHR(90) + CHR(34) + CHR(57) + CHR(42) + CHR(44) + CHR(49) + CHR(42) + CHR(60) + CHR(39) + CHR(84) + CHR(77) + CHR(75) + CHR(47) + CHR(23) + CHR(34) + CHR(54) + CHR(56) + CHR(59) + CHR(93) + CHR(34)
  3. consta = ASC(SUBSTR(dato, 2, 1))
  4. FOR x = 3 TO long STEP 2
  5.     consta = consta + ASC(SUBSTR(dato, x, 1))
  6. ENDFOR
  7. consta = consta / 7
  8. IF consta < 17
  9.     consta = 17
  10. ENDIF
  11. FOR x = 1 TO long
  12.     decena = VAL(SUBSTR(STR(ASC(SUBSTR(dato, x, 1))), 10, 1))
  13.     entero = consta * VAL(SUBSTR(peso, x, 1))
  14.     DO WHILE entero > 255
  15.          entero = entero - 33
  16.     ENDDO
  17.     newchr = entero + decena + ASC(SUBSTR(dato, x, 1))
  18.     DO WHILE newchr > 255
  19.          newchr = newchr - 19
  20.     ENDDO
  21.     IF x = 1
  22.          encript = CHR(newchr)
  23.     ELSE
  24.          encript = encript + CHR(newchr)
  25.     ENDIF
  26. ENDFOR
  27. RETURN encript
  28. ENDFUNC
  29. *
  30. *
  31.  


Alguien puede ayudarme ha descifrar esa clave?, no he programado en el lenguaje VFP... o en todo caso decirme si se puede hacer ingeniería inversa a ese algoritmo para meterme a estudiar el lenguaje.

Gracias.


Título: Re: algoritmo de desencriptación
Publicado por: MCKSys Argentina en 3 Noviembre 2015, 12:57 pm
Hola!

En efecto, si puedes invertir esa función. Sólo debes entender qué es lo que hace y luego hacer lo inverso.

Si nunca has programado en VFP, dispones de la MSDN para solventar las dudas que tengas respecto a la sintaxis del lenguaje.

Una buena ayuda sería que veas la parte donde es llamada (usada) la función, ya que recibe un parámetro (long) el cual no está claro qué es lo que es (no parece ser el largo de "dato")

Saludos!


Título: Re: algoritmo de desencriptación
Publicado por: MaLkAvIaN_NeT en 3 Noviembre 2015, 14:45 pm
Gracias!. Algo más práctico y rápido porque el tiempo apremia va a ser crearme un proyecto VFP con esa función, genero una nueva clave y hago un update a la tabla usuario con la clave cifrada. Tuve que dormir para despejarme  :xD


Título: Re: algoritmo de desencriptación
Publicado por: MCKSys Argentina en 4 Noviembre 2015, 03:10 am
Gracias!. Algo más práctico y rápido porque el tiempo apremia va a ser crearme un proyecto VFP con esa función, genero una nueva clave y hago un update a la tabla usuario con la clave cifrada. Tuve que dormir para despejarme  :xD

Si lo ves desde el punto de vista de la practicidad y la rapidez, el método que has elegido es válido; pero desde el momento en que éste es el foro de Ing. Inversa, te recomiendo analizar la función e invertirla. Es muy buena práctica!  ;)

Saludos!