descifar algoritmo de creación de int64 a partir de nombre de archivo

Iniciado por jor1980, 30 Septiembre 2010, 01:56 AM

0 Miembros y 3 Visitantes están viendo este tema.

jor1980

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?

APOKLIPTICO

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?
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

jor1980

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

APOKLIPTICO

Efectivamente es un hash, no tenés acceso al generador? Porque se podría probar algo de ingenieria inversa.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

jor1980

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?

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

jor1980

La función es esta, aunque según me dijeron aquí puede que no sea verdadera:


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
}

APOKLIPTICO

Yo ya la estuve viendo.

Código (cpp) [Seleccionar]
#include <iostream>
#include <string.h>
using namespace std;
int64_t calc_hash(char *szString);
void ReverseString(char *szString);
int main()
{
    char szTestString[1000000];
    memset(szTestString, 'a', 100000);
    cout << calc_hash(szTestString);
    return 0;
}


int64_t calc_hash(char *szString)
{
    int64_t hash = 0;
    ReverseString(szString);
    unsigned long n = 1;
    long i = 1;
    for (i = 0; i < strlen(szString); i++)
    {
        hash = hash + szString[i] * n;
        n = n * 33;
    }
    hash = hash + n*5381;
    return hash;
}

void ReverseString(char *szString)
{
    char *szOutString = new char[strlen(szString)];
    for(unsigned long i = 0 ; i < strlen(szString); i++)
    {
        szOutString[strlen(szString) - i - 1] = szString[i];
        if(i%10000 == 0) cout << i << endl;
    }
    szOutString[strlen(szString)] = 0;
    strcpy(szString, szOutString);
    delete szOutString;
}


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.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

jor1980

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

APOKLIPTICO

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.