Significado de los parámetros rtgen (generación de tabla de arco iris)

0

Me gustaría generar algunas tablas de arco iris y probar algunas búsquedas de contraseña como un ejercicio. Estoy familiarizado con el craqueo de hashes usando algunas GPU caras y hashcat, así que no quiero esa respuesta como alternativa.

Aquí hay alguna documentación: enlace

Me parece inadecuado, incluso después de consultar el documento académico que recomienda este sitio.

Por ejemplo, para generar una tabla de arco iris para romper hashes MD5, esto se da como ejemplo:

rtgen md5 loweralpha-numeric 1 7 0 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 1 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 2 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 3 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 4 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 5 3800 33554432 0

Esto genera un conjunto de 6 tablas de arco iris (¿por qué 6?) para romper los hashes md5 de 1 a 7 caracteres en el rango a-z0-9.

El siguiente parámetro (5º) es el parámetro de índice, que utiliza una "función de reducción" diferente, que en mi opinión es la función de hash a texto sin formato. No tengo idea de lo que podría ser un índice de tabla, o qué significan los números al referirse a una función de reducción diferente. (Selecciona función de reducción).

Luego está la longitud de la cadena (6º parámetro). Cuanto más larga es la longitud, más plaintexts se almacenan, y por lo tanto toma más memoria. Creo que entiendo esa parte. Por lo tanto, para una cadena de 3800, probablemente se trate de 3800 caracteres de texto sin formato.

Luego, el número de cadenas de arco iris que se generarán (una matriz de cadenas, cada cadena de 16 bytes). (7º parámetro).

El último parámetro es el índice de la parte, por lo que debes incrementarlos en uno cada vez para dividir un archivo grande en partes más pequeñas, manteniendo todos los demás parámetros idénticos. Parece autoexplicativo.

Si entiendo esto correctamente, con 3800 plaintexts (variando la longitud de 1 a 7 en el ejemplo anterior), pero manteniéndolo a la longitud de 7 plaintexts, almacenaría 542.86 textos sin formato, aproximadamente.

El parámetro de matriz de cadenas debe ser un multiplicador, supongo, por lo que con 33554432 esto significa aproximadamente 542 textos sin formato x 33554432, = 18,186,502,144 textos sin formato.

Con el comando ejecutar 6 veces, eso es 18,186,502,144 x 6 textos sin formato, o 109,119,012,864 textos sin formato en total.

Si tomamos el número de posibles caracteres de caracteres alfa-bajos, 26 + 10 = 36, y queremos encontrar cuántas contraseñas de 7 caracteres con este conjunto de caracteres, veremos que C = N ^ L, o combinaciones = número de caracteres para el poder de la longitud de la contraseña. Para el conjunto de caracteres numéricos más bajos, 36, longitud de contraseña 7, luego 36 ^ 7 = 78,364,164,096 posibles contraseñas de 7 caracteres.

Me pregunto si estoy en el camino correcto: con los 6 comandos, esto genera 109,119,012,864 textos simples (?) en 6 archivos, ordenados y combinados para una búsqueda más rápida.

Eso es aproximadamente 31 billones de textos simples generados en los comandos. Supongo que hay datos adicionales allí, por lo que el número de plaintexts almacenados es un poco menor que esto.

Me pregunto: si quiero, por ejemplo, un 50% de probabilidad de romper un hash SHA1 con un número alfa inferior (az 0-9) de 8 a 10 caracteres, entonces necesito almacenar 36 ^ 10/2 plaintexts, así que Me pregunto qué comandos usaría y por qué.

[Solo calculando antes de los comandos]:

36 ^ 10 = 3,656,158,440,062,976 o 3.6 cuatrillones de píxeles, alrededor de eso. Supongo que para un 50% de probabilidad necesito almacenar la mitad de esos plaintexts, o 1,828,079,220,031,488 o 1.8 cuatrillones aproximadamente.

Entonces, si usé una cadena de 3800, ¿tal vez eso almacene 3800 plaintexts o 3800 caracteres para plaintexts y otros bits de información? Si asumo 3800 plaintexts, entonces para obtener 1.8 quadrillion de plaintexts, mi "número de cadenas" sería aproximadamente 481,073,478,955.

En los comandos de ejemplo hay 78,364,164,096 textos sin formato para almacenar, o aproximadamente 78.4 mil millones. Así que con 3800 x 33,554,432 de altura, eso es 4.7890485652059026823698344598447e + 52, así que estoy seguro de que tengo algo mal aquí. ¿Y si fuera 3800 plaintexts con 10000 matrices de cadenas que contienen 3800 plaintexts? Eso sería 38,000,000 plaintexts en esa tabla, y luego, si estoy casi en lo correcto, ejecute el comando 2062 veces para tener casi todos los 78.4 billones de plaintexts almacenados.

Estoy perdido. Me pregunto qué significa exactamente esto (aparte de hash, conjunto de caracteres, longitud de contraseñas):

rtgen sha1 loweralpha-numeric 1 10 0 4800 5000000 0

y cuántas veces lo ejecutaría incrementando el quinto parámetro cada vez para obtener un 50% de probabilidad, o una probabilidad de 0.5 de encontrar un texto llano de número alfa inferior a 10 desde los hashes sha1 buscados en esa tabla del arco iris.

¿Alguien puede explicar en términos sencillos y dar un ejemplo real para generar probabilidades además de encontrar un texto en claro, es decir, probabilidad 1?

Gracias, cualquier ayuda para entender los parámetros rtgen es muy apreciada.

    
pregunta JYG 28.09.2018 - 18:40
fuente

0 respuestas

Lea otras preguntas en las etiquetas