John the ripper - creando reglas específicas

3

Tenemos una situación en la que no encuentro ninguna documentación al respecto. Estamos tratando de escalar a través de múltiples máquinas / trabajos al dividir el espacio de teclas por complejidad. Es un pwd alfanum completamente aleatorio de 7 caracteres.

Creamos una "lista de palabras" de 3844 "palabras", es decir, todos los combos de 2 caracteres alfanuméricos (62 * 62 = 3844)

aa
ab
ac
..
08
09
00

En CONFIG, el plan era establecer min / max len = 7

Para la escala, planeamos crear 3844 reglas, donde cada regla tomó una línea (Línea N) de la lista de palabras seguida de cualquier alfanum para los caracteres restantes. Algo como abajo.

[Línea N palabra]? x? x? x? x? x = Regla N

Podemos entonces, en la línea de comandos, llamar a cada regla diferente, como un trabajo distinto, con todas las máquinas configuradas como clones entre sí.

1) ¿Cómo se vería una regla como esta (Regla N)? Solo puedo encontrar referencias a Az o A0 (es decir, todos los elementos de la lista de palabras, o prepagando en toda la documentación y ejemplos en la web)

2) ¿Alguna otra configuración que pueda faltar para lograr esto?

    
pregunta Ryan 11.01.2018 - 19:04
fuente

2 respuestas

1

En el pasado, cuando he fragmentado el descifrado de contraseñas en muchas máquinas, acabo de dividir mi lista de palabras en secciones y le proporcioné a cada máquina una sección de lista de palabras para probar. Esto parece mucho más sencillo que manipular las reglas por entrada en la lista de palabras. (Después de todo, las reglas deben aplicarse a la lista de palabras, no a una sola palabra).

    
respondido por el David 12.01.2018 - 02:03
fuente
0

La bandera " --node " de John está diseñada para hacer esto.

--node=MIN[-MAX]/TOTAL     this node's number range out of TOTAL count

Cotizando el documento de OPCIONES :

  

Esta opción pretende permitir algunos triviales configurados manualmente   Procesamiento paralelo y distribuido. Por ejemplo, para dividir el   carga de trabajo a través de dos nodos (que podrían ser máquinas, núcleos de CPU, etc.),   especificaría "--node = 1/2" en una invocación de John y "--node = 2/2"   en el otro. (Si lo hace en una sola máquina y con la misma   compilación de John, también necesitarás especificar diferentes "--session"   nombres para las dos invocaciones simultáneas.) Se supone que los nodos   ser la misma velocidad (si este no es el caso, uno se adelantará a la   otro y es probable que se haga antes, a menos que esté utilizando un craqueo   Modo y configuración de tal manera que la sesión no se espera nunca   "completo" - lo cual está bien.) Si sus nodos son muy diferentes   velocidad, puede compensar eso asignando rangos de nodo   Números a invocaciones individuales. Por ejemplo, si usas   Compilaciones de John habilitadas para OpenMP en dos máquinas, se admite OpenMP   (con buena escalabilidad) para el tipo de hash que está rompiendo, y uno de   Las máquinas tienen el doble de núcleos de CPU de velocidad similar a la otra,   entonces puede usar "--node = 1-2 / 3" en la máquina dos veces más grande (deje que sea   nodos 1 y 2 de un total de 3 nodos) y "--nodo = 3/3" en el más pequeño   uno.

     

Eficiencia de este enfoque para el procesamiento paralelo, como en la actualidad   implementado, varía según el modo de craqueo y su configuración (la eficiencia es   más alto para el modo incremental y para el modo de lista de palabras con muchas reglas, y   inferior para otros modos de craqueo y para el modo de lista de palabras sin reglas o   con pocas reglas), tipo de hash (la eficiencia es más alta para un cálculo más lento   hashes), recuento de sal (la eficiencia es mayor para recuentos de sal más altos), y   recuento de nodos (la eficiencia es mayor para recuentos de nodos más bajos). Escalabilidad   puede ser limitado El mayor número de nodos que puede usar razonablemente varía   mediante el modo de craqueo, su configuración, tipo de hash y recuento de sal. Con   modo incremental, la eficiencia en términos de tasa de c / s es casi perfecta   (esencialmente no hay sobrecarga), pero algunos nodos pueden actualmente   recibe muy poco trabajo, y este problema se ve agravado por un nodo alto   recuentos (como 100 o más) y / o ajustes restrictivos (como   MinLen y MaxLen configurados en el mismo valor o en un rango estrecho, y / o   archivo de caracteres con pocos caracteres siendo utilizados). Con modo de lista de palabras, para   de alta eficiencia, la cuenta de reglas (después de la expansión del preprocesador) necesita   ser muchas veces mayor que el número de nodos, a menos que la tasa de p / s sea baja   de todos modos (debido al tipo de hash lento y / o al alto recuento de sal).

También querrá usar " --fork=[cpu-count] " para aprovechar todos los núcleos locales.

    
respondido por el Royce Williams 12.01.2018 - 05:55
fuente

Lea otras preguntas en las etiquetas