Foro de elhacker.net

Seguridad Informática => Criptografía => Mensaje iniciado por: jor1980 en 30 Septiembre 2010, 01:56 am



Título: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: jor1980 en 30 Septiembre 2010, 01:56 am
Hola a todos me gustaría que me orientarais un poco sobre un tema que quiero resolver. necesito dar con un int64 generado a partir de la cadena de texto del nombre de unos archivos.

Tengo los valores de ese int64 de muchos y sus respectivos nombres, pero no se si existe alguna técnica para intentar descifrar esto.

Me podéis orientar en alguna técnica existente para hacerlo?


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: APOKLIPTICO en 30 Septiembre 2010, 04:03 am
Un int64? Me suena a hash.
Si el tamaño de la salida es constante, es muy probable que se trate de un algoritmo de hash, aunque extraño, no conozco ningun hash con output de 64 bits asi que debe de ser casi seguro uno hecho a medida.
Tenés el generador? Podés poner un par de ejemplos?


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: jor1980 en 30 Septiembre 2010, 11:22 am
En efecto por lo que me dijeron creo que se trata de un hash, te dejo un par de ejemplos

en primer lugar te dejo el número en hexadecimal(imagino que es bigendian porque los datos del archivo vienen en bignedian):

  B382A7808D638254              data/sceneassets/pitch/pitchmowpattern_9_textures.rx3   

-----------------------------------------------------------------------

430D721BDB198BDA
data/sceneassets/pitch/pitchcolor_1_textures.rx3


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: APOKLIPTICO en 30 Septiembre 2010, 13:13 pm
Efectivamente es un hash, no tenés acceso al generador? Porque se podría probar algo de ingenieria inversa.


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: jor1980 en 30 Septiembre 2010, 15:58 pm
Pues al generador no tengo acceso, tengo el archivo que contiene los hash de todos los archivos.

Se que un grupo de persona cree haberlo descifrado y me pasaron una función que después de traducirla a c# no me da el resultado del hash pero te la puedo pasar a ver si te sirve de algo.

Sin acceso al generador hay alguna forma de descifrarlo?


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: Shell Root en 30 Septiembre 2010, 19:35 pm
Poned la función que te dieron, NO LA QUE HICISTE EN C#!


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: jor1980 en 1 Octubre 2010, 19:52 pm
La función es esta, aunque según me dijeron aquí puede que no sea verdadera:

Código:
function calc_hash(string) {
hash = 0
string = ReverseString(string)
n = 1
for (i = 1; i < length(string); i++) {
hash = hash + Ord(string[i]) * n
n = n * 33
}
hash = hash + n*5381
return hash
}


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: APOKLIPTICO en 1 Octubre 2010, 19:57 pm
Yo ya la estuve viendo.

Código
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4. int64_t calc_hash(char *szString);
  5. void ReverseString(char *szString);
  6. int main()
  7. {
  8.    char szTestString[1000000];
  9.    memset(szTestString, 'a', 100000);
  10.    cout << calc_hash(szTestString);
  11.    return 0;
  12. }
  13.  
  14.  
  15. int64_t calc_hash(char *szString)
  16. {
  17.    int64_t hash = 0;
  18.    ReverseString(szString);
  19.    unsigned long n = 1;
  20.    long i = 1;
  21.    for (i = 0; i < strlen(szString); i++)
  22.    {
  23.        hash = hash + szString[i] * n;
  24.        n = n * 33;
  25.    }
  26.    hash = hash + n*5381;
  27.    return hash;
  28. }
  29.  
  30. void ReverseString(char *szString)
  31. {
  32.    char *szOutString = new char[strlen(szString)];
  33.    for(unsigned long i = 0 ; i < strlen(szString); i++)
  34.    {
  35.        szOutString[strlen(szString) - i - 1] = szString[i];
  36.        if(i%10000 == 0) cout << i << endl;
  37.    }
  38.    szOutString[strlen(szString)] = 0;
  39.    strcpy(szString, szOutString);
  40.    delete szOutString;
  41. }

Ese es un equivalente en C++.
Igual, hay muchas cosas que lo descalifican como hash.
Overflowea facilmente con un input lo suficientemente grande y el tamaño de la salida es proporcional al tamaño de la entrada, aparte de que no da los mismos hashes.


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: jor1980 en 2 Octubre 2010, 17:44 pm
Hola, parece que alguien ha dado con el hash y en este programa si leeis entre sus características reconstruye los hashes, no si son exáctamente los que busco pero lo más probable es que si, teniendo este programa que los genera que puedo hacer ahora?


http://downloads.moddingway.com/file/5525.html


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: APOKLIPTICO en 2 Octubre 2010, 17:47 pm
El programa no te sirve??
Ya que estás, pasate por la encuesta del taller de criptografía:
https://foro.elhacker.net/criptografia/encuesta_creando_un_algoritmo_entre_todos-t306507.0.html (https://foro.elhacker.net/criptografia/encuesta_creando_un_algoritmo_entre_todos-t306507.0.html)


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: jor1980 en 3 Octubre 2010, 00:50 am
El programa no te sirve??
Ya que estás, pasate por la encuesta del taller de criptografía:
https://foro.elhacker.net/criptografia/encuesta_creando_un_algoritmo_entre_todos-t306507.0.html (https://foro.elhacker.net/criptografia/encuesta_creando_un_algoritmo_entre_todos-t306507.0.html)

El programa tiene utilidad, pero me gustaría simplificar la edición del fifa y incluir la función del hash en mi programa para importar y exportar texturas facilitando la edición del juego a todo aquel que quiera editarlo.
Cómo puedo sacar el hash de ese programa?


Título: Re: descifar algoritmo de creación de int64 a partir de nombre de archivo
Publicado por: APOKLIPTICO en 3 Octubre 2010, 01:47 am
Ingeniería inversa, pidiendo el código al autor?