08-02-2010, 11:54
Bueno... esto tal vez de más para El Psiquiátrico que para HW/SW, pero no importa...
Siempre tuve un trauma... Desde que vi que phpBB y algunos otros proyectos de SL en php usaban md5 para guardar los passwords, siempre quise saber qué otras claves podría usar para entrar a mi cuenta... Porque estaba convencido de que tenía que haber más de una clave que genere el mismo resultado md5...
Alguna vez intenté usar prolog para pedirle claves que se codifiquen como la mia, pero no encontré implementación de md5 en prolog (y, seguramente, iba a ser lentísimo y pesadísimo correr eso... probablemente se iba a empachar el stack)...
Así que anoche me agarró un ataque, y me puse a escribir... Y, como php es lo que mejor/más fácil me sale, en php lo hice... El código es este:
Cuestión que lo dejé ejecutando anoche, a las 4am habrá arrancado... y estuvo hasta hace un rato...
110 hermosos MB de códigos md5 y strings raros, que creo que recién iban por 4 caracteres de longitud...
Ahora mismo, gEdit está intentando ordenar el archivo, para buscar duplicados más facilmente...
Como vi que, a pesar de haber hecho bastante, sigue faltando mucho, me pasé al lado de las matemáticas...
un hash en md5 son 32 caracteres hexadecimales... osea, 32 caracteres con 16 posibilidades cada uno... osea, 32^16 = 1208925819614629174706176 (1,2 . 10^24 - un poquito más que dos moles )
viendo ese número (y la conversión a moles) me dio miedito... pensé que mi teoría se caía...
pero no... con 8 caracteres de longitud y los 48 posibles caracteres que elegí para mi script (creo que son todos legales en un password), las posibles combinaciones son 7237005577332262213973186563042994240829374041602535252466099000494570602496... un poquito más grande el número... y eso sólo con las pass de 8 caracteres (osea, no incluye las de 7, 6, 5...)
así que confirmé lo que ya sabía, pero voy a seguir buscando cuáles son los otros pass que matchean con el mio...
aburrido yo?
salutes!
Siempre tuve un trauma... Desde que vi que phpBB y algunos otros proyectos de SL en php usaban md5 para guardar los passwords, siempre quise saber qué otras claves podría usar para entrar a mi cuenta... Porque estaba convencido de que tenía que haber más de una clave que genere el mismo resultado md5...
Alguna vez intenté usar prolog para pedirle claves que se codifiquen como la mia, pero no encontré implementación de md5 en prolog (y, seguramente, iba a ser lentísimo y pesadísimo correr eso... probablemente se iba a empachar el stack)...
Así que anoche me agarró un ataque, y me puse a escribir... Y, como php es lo que mejor/más fácil me sale, en php lo hice... El código es este:
<?php
function haceloString($numero){ //recibo un integer y lo convierto a un string con "ese orden"
$respuesta="";
$caracteres='0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ _-|°!"#$%&/()=?¡*[]';
$cantidad=strlen($caracteres);
while($numero > $cantidad){ //esto lo aprendí cuando SGP nos enseñó a sumar en discreta (-:
$respuesta.=$caracteres[$numero % $cantidad];
$numero = intval($numero / $cantidad);
}
$respuesta=$caracteres[$numero].$respuesta;
return $respuesta;
}
if($_GET['inicio']!=null) //si no tengo nada en inicio, es porque recién entro. osea, pongo 0. sino, arranco desde inicio
$inicio = $_GET['inicio'];
else
$inicio=0;
$fin = $inicio + 500; //termino 500 números después
$archivo = fopen('respuestas.txt','a');//abro el archivo para appendarle cosas
fwrite($archivo,"Empiezo en $inicio\n");
for($i=$inicio;$i<$fin;$i++){
$jose = haceloString($i);
fwrite($archivo,md5($jose)."\t$jose\n");//escribo cada string y su conversión a md5
}
fwrite($archivo,"Termino en $fin\n");
fclose($archivo);
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=?inicio=".++$fin."\]"; //hago refresh en 5 segundos para que la compu descanse y que empieze donde terminé (-:
?>
Cuestión que lo dejé ejecutando anoche, a las 4am habrá arrancado... y estuvo hasta hace un rato...
110 hermosos MB de códigos md5 y strings raros, que creo que recién iban por 4 caracteres de longitud...
Ahora mismo, gEdit está intentando ordenar el archivo, para buscar duplicados más facilmente...
Como vi que, a pesar de haber hecho bastante, sigue faltando mucho, me pasé al lado de las matemáticas...
un hash en md5 son 32 caracteres hexadecimales... osea, 32 caracteres con 16 posibilidades cada uno... osea, 32^16 = 1208925819614629174706176 (1,2 . 10^24 - un poquito más que dos moles )
viendo ese número (y la conversión a moles) me dio miedito... pensé que mi teoría se caía...
pero no... con 8 caracteres de longitud y los 48 posibles caracteres que elegí para mi script (creo que son todos legales en un password), las posibles combinaciones son 7237005577332262213973186563042994240829374041602535252466099000494570602496... un poquito más grande el número... y eso sólo con las pass de 8 caracteres (osea, no incluye las de 7, 6, 5...)
así que confirmé lo que ya sabía, pero voy a seguir buscando cuáles son los otros pass que matchean con el mio...
aburrido yo?
salutes!