¿Cómo puedo generar diccionarios personalizados de fuerza bruta?

12

Durante las pruebas, he encontrado que las empresas a menudo usan variaciones de sus nombres para contraseñas críticas (por ejemplo, la contraseña de Microsoft puede ser M1cr0s0f + o m1cros0ft etc.).

Entonces, si le diera la frase "intercambio de pila" idealmente computaría tantas variaciones lógicas como sea posible, incluyendo cosas como:

stack_exchange!

He visto muchos generadores de diccionario pero todos parecen hacer algo en la línea de

aaaaaaa
aaaaaab
aaaaaac
aaaaaad

Me pregunto si hay alguna herramienta disponible que me permita generar un gran número de permutaciones con una palabra de "inicio".

    
pregunta NULLZ 11.09.2013 - 04:04
fuente

6 respuestas

6

Intente usar crunch - generador de lista de palabras .

El uso es:

./crunch <from-len> <to-len> [-f <path to charset.lst> charset-name] [-o wordlist.txt or START] [-t [FIXED]@@@@] [-s startblock]
La opción

-t le permite especificar un patrón, por ejemplo: st% ck ^% xch% ng%

Donde solo

  • las @ 's cambiarán con letras minúsculas
  • los, cambiarán con letras mayúsculas
  • los% 's cambiarán con los números
  • los ^ 's cambiarán con los símbolos

Se ejecuta como sigue:

./crunch 14 14 -t st%ck^%xch%ng% -o wordlist.txt

da 330000 resultados:

st0ck!0xch0ng0
st0ck!0xch0ng1
st0ck!0xch0ng2
st0ck!0xch0ng3
st0ck!0xch0ng4
st0ck!0xch0ng5
st0ck!0xch0ng6
...

También puedes modificar el conjunto de caracteres si crees que es insuficiente.

    
respondido por el Kerim Oguzcan Yenidunya 11.09.2013 - 15:19
fuente
5

Acabo de crear una herramienta que hará lo que está hablando. Básicamente toma una palabra y genera diferentes contraseñas posibles al reemplazar los caracteres con mayúsculas / minúsculas y sustituciones comunes. Siéntase libre de echarle un vistazo aquí:

enlace

Para una palabra de destino de stackexchange , la contraseña potencial es bastante larga, ya que esencialmente está creando un producto cartesiano de todas las posibles sustituciones de caracteres. La siguiente llamada:

python passgen.py -f stackexchange

Genera una lista con 11.943.936 contraseñas como se ve a continuación:

stackexchange
stackexchangE
stackexchang3
stackexchanGe
stackexchanGE
.
.
.
574<K3+<#4N9e
574<K3+<#4N9E
574<K3+<#4N93
    
respondido por el Abe Miessler 19.08.2014 - 17:56
fuente
2

No estoy seguro de las implicaciones algorítmicas (lo que significa que probablemente haya mucho que mejorar en mi solución), pero aquí va:

Cada letra tiene una ortografía alternativa. De su ejemplo, o tendría la matriz de O,0 (el último es un cero). De manera similar, s obtendría S,5 , etc. Incluso NULL puede reemplazarse con !,1,2,3 ... etc. También son posibles las gráficas cuando sea aplicable.

Por lo tanto, no permutar en palabras, permutar en letras. No estoy seguro de si existe un conjunto de reglas precompilado pero no importa; la parte más lenta es escribir las permutaciones de las letras. El bucle principal sería perfectamente sencillo.

for($i=0; $i<strlen($word); $i++){
    $l=$word[$i];
    for($j=0; $j<strlen($perms[$l]); $j++){
        save(perms[$l][$j]);
    isUpper($l) ? $word[$i]=tolower($l) : $word[$i]=toupper($l);
    save($word);
}

para algunos pseudocódigos con sabor a PHP. Escogí PHP porque los arreglos asociativos lo hacen un poco más cómodo. En otras palabras: escribir la herramienta usted mismo puede ser más rápido que buscarla.

    
respondido por el rath 11.09.2013 - 07:48
fuente
2

¡aquí tienes! Lo hice hace unos meses, es un script Python 2.7 : p Espero que te ayude

import time
print ("---------------------------------------------------");
print ("Welcome to BruteForce List Generator!");
print ("---------------------------------------------------");
print ("File output can be long, sometimes in x100Mbs!");
print ("so, have patience fgt,");
print (" ");
print ("Press ^C to exit");
print ("---------------------------------------------------");
length=int(raw_input("Enter the maximum of characters: "))
name=raw_input("Enter destination file name with extension (.txt): ")
tic = time.clock()
print ("---------------------------------------------------");
print ("Running, Please Wait!");
print ("---------------------------------------------------");
lista=[0 for x in xrange(length)]
x=length-1
string="abcdefghijklnmopqrstuvwxyz1234567890"
list_of_results=[]
file1=file(name,"w")
while(x>-1):
    result=""
    if lista[x]==len(string)-1:
        for z in xrange(length):
            result+=string[lista[z]]
        lista[x]=0
        x-=1
    elif x==length-1:
        for z in xrange(length):
            result+=string[lista[z]]
        lista[x]+=1
    else:
        for z in xrange(length):
            result+=string[lista[z]]
        lista[x]+=1
        if x>0:
            x+=1
        else:
            x=length-1
    file1.write(result+"\n")
toc = time.clock()
ttn = toc - tic
print ("Done! in "+str(ttn)+" seconds.");
print ("Please check "+str(name)+" in your directory");
print ("---------------------------------------------------");

¡Salud!

    
respondido por el v1k45 06.09.2014 - 16:16
fuente
1

He comenzado a crear una aplicación Qt para hacer esto. Está diseñado para ser utilizado contra un usuario específico. Lo creé para satisfacer mi propia necesidad, por lo que está preparado de una manera, pero planeo hacerlo más personalizable. Tienes que compilarlo tú mismo en este momento, pero es Qt, por lo que se ejecutará en la mayoría de las plataformas.

Está en Github

Le asigna el nombre de la compañía de los usuarios y, opcionalmente, algunas palabras clave adicionales y generará contraseñas basadas en ellas. Está en 0.1 en este momento y bajo desarrollo activo. El código es fácil, por lo que si no hace exactamente lo que necesita, puede hacer cambios (e incluso contribuir con ellos)

    
respondido por el 0x7c0 06.09.2014 - 14:52
fuente
0

Hmmm. Puedes usar esto con configuraciones adicionales

enlace

    
respondido por el Tilak Maddy 30.12.2016 - 14:52
fuente

Lea otras preguntas en las etiquetas