Manual guía para crear diccionarios (archivos con claves) para auditoria de redes. Para ser usado en Linux. Reseña del...
Con unos parámetros definidos podemos crear diccionarios de una manera rápida, confiable y flexible. El comando crunch es una herramienta fundamental para el pentesting.
Creación de diccionarios Con CRUNCH
INTRODUCCIÓN En el mundo del hacking tenemos una técnica para obtener las claves de acceso a las redes WIFI llamada fuerza bruta. Según Wikipedia la fuerza bruta es: "La forma de recuperar una clave probando todas las combinaciones posibles hasta encontrar aquella que permite el acceso." Para ejecutar este tipo de ataque necesitaremos un archivo que contenga dentro de sí cientos, miles e incluso millones de palabras, para ir probando una por una hasta dar con la palabra válida (pass). Estos archivos son llamados diccionarios o wordlists (listas de palabras). Ahora quiero que se imaginen que tengamos que crear un diccionario escribiendo todas las posibles palabras una por una, no tendría sentido y tampoco sería práctico. Para esto existen programas que generan diccionarios automáticamente simplemente especificando algunos parámetros de entrada.
QUE E S CRUNCH? CRUNCH?
Crunch es un programa sin interfaz gráfica que basándose en criterios establecidos por el usuario (input) es capaz de generar diccionarios con gran flexibilidad, para ser usados en fuerza bruta (output), el resultado de crunch puede ser visto en pantalla, puede ser guardado en un u n archivo .txt o puede enviarse a otro programa en tiempo real para su uso. (mimayin@ACiiiD (https://underc0de.org/foro/index.php?action=profile;u=22110).ath.cx) y todas las versiones posteriores fueron actualizadas y desarrolladas por bofh28 (
[email protected]) a ellos todo el agradecimiento y el respeto por tan maravillosa herramienta. La
version
1.0
fue
creada
por
mima_yin
La página oficial es: http://sourceforge.net/projects/Crunch-wordlist/files/
COMO INSTALAR CRUNCH Linux
Abrir una terminal y escribir: sudo apt-get install crunch
Dependiendo de la distribución podríamos tener uno que otro gestor de paquetes, así que cada cual podría modificar el comando de acuerdo a sus sistemas (yum, pacman, aptitude, etc..) Si no se encuentra en los repositorios de software de la distribución que tengamos instalada, podríamos bajarnos el tarball e instalarlo nosotros mismos: git clone http://git.code.sf.net/p/crunch-wordlist/code crunchwordlist-code cd crunch-wordlist-code; sudo make && sudo make install; Windows
Pues el creador no ha liberado una versión oficial para los usuarios de Windows, pero venga que aquí llega la magia del software open-source, y es que un usuario, mejor dicho una usuaria (maripuri) ha compilado la versión 3.2 de Crunch para Windows, así que a ella muchas gracias por su esfuerzo y trabajo, los interesados pueden bajarse el fichero desde aquí: http://www.mediafire.com/download/dywlwgrb44vrza2/crunh+3.2+para+windows.r ar
COMO USAR CRUNCH NIVEL 1 Acá veremos su uso, desde la ejecución más sencilla hasta la más compleja. Bastaría con escribir "crunch" en una terminal para conseguir información donde podemos ver claramente la forma sencilla en que podemos hacer uso de ella : Usage: crunch [options] where min and max are numbers
(http://fotos.subefotos.com/13542703323c86772cb711c276f68845o.png)
El primer y segundo parámetro es para indicarle la cantidad de caracteres que necesitamos, número mínimo, número máximo de caracteres. Probemos con generar todas las posibles combinaciones para una palabra de 4 caracteres: crunch 4 4
(http://fotos.subefotos.com/6fedc81f69efc149d49f948bff353f27o.png) Como se aprecia en la imagen, crunch avisa cuantas líneas serán generadas y cuanto espacio ocupará. A continuación les comparto las primeras líneas de la salida en pantalla: aaaa aaab aaac aaad aaae aaaf aaag aaah aaai aaaj aaak aaal aaam aaan aaao aaap aaaq aaar aaas aaat aaau aaav ………..etc.
Tenemos que crunch ha generado todas las posibles combinaciones para una palabra de 4 caracteres, pero sólo letras minúsculas. No se han usado números, símbolos, mayúsculas ni espacios en blanco. La razón se explica a continuación:
Crunch utiliza una variable llamada charset (character setting) y corresponde al conjunto de caracteres que serán usados para la generación del diccionario/wordlist, por defecto el charset es lalpha (lower alphabet). crunch 4 4 -f ./charset.lst numeric 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 ………..etc
Todo ha ido bien, pero ahora notamos una pequeña diferencia, y es que solo ha generado números, pero eso es justo lo que queríamos no? Y como lo hemos logrado pues con la opción -f y listo!! Esta opción le indica dónde buscar el fichero de variables, es decir, donde están preestablecidas todos los charset, es decir que deb emos especificar la ruta al archivo así como nuestra selección dentro del mismo, en mi caso tengo el charset.lst en mi directorio home, por ello no específico ruta hasta el mismo. Cuantos
charset
podemos
elegir
además
de
lalpha y
de
numeric?
# charset configuration file for winrtgen v1.2 by Massimiliano Montoro (
[email protected]) # compatible with rainbowcrack 1.1 and later by Zhu Shuanglei hex-lower hex-upper
= =
numeric numeric-space symbols14 symbols14-space symbols-all symbols-all-space
[0123456789abcdef] [0123456789ABCDEF] =
=
= [0123456789] [0123456789 ]
= [!@#$%^&*()-_+=] [!@#$%^&*()-_+= ]
= [!@#$%^&*()-_+=~`[]{}|\:;"',.?/] = [!@#$%^&*()-_+=~`[]{}|\:;"',.?/ ]
ualpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ] ualpha-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ ] ualpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789] ualpha-numeric-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ] ualpha-numeric-symbol14 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=] ualpha-numeric-symbol14-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ] ualpha-numeric-all = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+=~`[]{}|\:;"',.?/] ualpha-numeric-all-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+=~`[]{}|\:;"',.?/ ] lalpha = [abcdefghijklmnopqrstuvwxyz] lalpha-space = [abcdefghijklmnopqrstuvwxyz ] lalpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789] lalpha-numeric-space = [abcdefghijklmnopqrstuvwxyz0123456789 ] lalpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=] lalpha-numeric-symbol14-space = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+= ] lalpha-numeric-all = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+=~`[]{}|\:;"',.?/] lalpha-numeric-all-space = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+=~`[]{}|\:;"',.?/ ] mixalpha = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ] mixalpha-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ] mixalpha-numeric = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789] mixalpha-numeric-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ] mixalpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$ %^&*()-_+=] mixalpha-numeric-symbol14-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$ %^&*()-_+= ] mixalpha-numeric-all = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$ %^&*()-_+=~`[]{}|\:;"',.?/] mixalpha-numeric-all-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$ %^&*()-_+=~`[]{}|\:;"',.?/ ] ###################################################################
###################### # SWEDISH CHARSUPPORT # ################################################################### ###################### ######################### # Uppercase # ######################### ualpha-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ] ualpha-space-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ ] ualpha-numeric-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ0123456789] ualpha-numeric-space-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ0123456789 ] ualpha-numeric-symbol14-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ0123456789!@#$%^&*()-_+=] ualpha-numeric-symbol14-space-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ0123456789!@#$%^&*()-_+= ] ualpha-numeric-all-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ0123456789!@#$%^&*()_+=~`[]{}|\:;"',.?/] ualpha-numeric-all-space-sv = [ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ0123456789!@#$%^&*()_+=~`[]{}|\:;"',.?/ ] ######################### # Lowercase # ######################### lalpha-sv = [abcdefghijklmnopqrstuvwxyzåäö] lalpha-space-sv = [abcdefghijklmnopqrstuvwxyzåäö ] lalpha-numeric-sv = [abcdefghijklmnopqrstuvwxyzåäö0123456789] lalpha-numeric-space-sv = [abcdefghijklmnopqrstuvwxyzåäö0123456789 ] lalpha-numeric-symbol14-sv = [abcdefghijklmnopqrstuvwxyzåäö0123456789!@#$%^&*()-_+=] lalpha-numeric-symbol14-space-sv = [abcdefghijklmnopqrstuvwxyzåäö0123456789!@#$%^&*()-_+= ] lalpha-numeric-all-sv = [abcdefghijklmnopqrstuvwxyzåäö0123456789!@#$%^&*()_+=~`[]{}|\:;"',.?/] lalpha-numeric-all-space-sv = [abcdefghijklmnopqrstuvwxyzåäö0123456789!@#$%^&*()_+=~`[]{}|\:;"',.?/ ] ######################### # Mixcase # ######################### mixalpha-sv = [abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ] mixalpha-space-sv = [abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ ] mixalpha-numeric-sv = [abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ01234567 89] mixalpha-numeric-space-sv =
[abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ01234567 89 ] mixalpha-numeric-symbol14-sv = [abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ01234567 89!@#$%^&*()-_+=] mixalpha-numeric-symbol14-space-sv = [abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ01234567 89!@#$%^&*()-_+= ] mixalpha-numeric-all-sv = [abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ01234567 89!@#$%^&*()-_+=~`[]{}|\:;"',.?/] mixalpha-numeric-all-space-sv = [abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ01234567 89!@#$%^&*()-_+=~`[]{}|\:;"',.?/ ]
Si no quieren especificar ningún charset pueden simplemente pasarle a Crunch cuales caracteres desean usar en la generación, por ejemplo: crunch 4 4 ab12
(http://fotos.subefotos.com/823b3c47829c6e839fe44680d48b5b0do.png) Y el resultado será: aaaa aaab aaa1 aaa2 aaba aabb aab1 aab2 aa1a aa1b aa11 aa12 aa2a aa2b aa21 aa22 abaa abab aba1 aba2 ………..etc.
CÓMO USAR CRUNCH NIVEL 2 Hasta ahora hemos usado crunch en un nivel básico, es decir sólo hemos generado diccionarios especificándole el tamaño y el conjunto de caracteres a usarse. El siguiente nivel complica un poco las cosas, permitiendo obtener más flexibilidad en la creación de diccionarios. Para generar una clave que inicia con "AAA......" pero no sabemos el resto, pues podríamos decirle a crunch: crunch 9 9 -t AAA@@@@@@
Y esto generará: AAAaaoerv AAAaaoerw AAAaaoerx AAAaaoery AAAaaoerz AAAaaoesa AAAaaoesb AAAaaoesc AAAaaoesd AAAaaoese AAAaaoesf AAAaaoesg AAAaaoesh AAAaaoesi AAAaaoesj AAAaaoesk AAAaaoesl AAAaaoesm AAAaaoesn AAAaaoeso AAAaaoesp AAAaaoesq AAAaaoesr AAAaaoess AAAaaoest ………..etc.
Acá vemos que crunch ha generado palabras sin modificar los 3 primeros caracteres. Otros ejemplos, donde mantenemos los primeros caracteres y reemplazamos los siguientes con caracteres alfanuméricos: crunch 9 9 -f .charset.lst lalpha-numeric -t AAA@@@@@@
o bien podríamos especificar los caracteres que queremos usar: crunch 9 9 abcefghijklmnopqrstuwxyz1234567890 -t AAA@@@@@@
Con ambos comandos tendríamos el mismo resultado, simplemente son dos formas de hacer lo mismo AAAaaaz1u AAAaaaz1v AAAaaaz1w AAAaaaz1x AAAaaaz1y AAAaaaz1z AAAaaaz10 AAAaaaz11 AAAaaaz12 AAAaaaz13 AAAaaaz14 AAAaaaz15 AAAaaaz16 AAAaaaz17 AAAaaaz18 AAAaaaz19 AAAaaaz2a AAAaaaz2b AAAaaaz2c AAAaaaz2d AAAaaaz2e AAAaaaz2f ………..etc.
Ahora viene la forma sencilla que es simplemente cambiar el símbolo "@" por el tipo de carácter que queremos insertar en la generación del diccionario, recuerden que con la opción -t, podemos especificar un patrón de caracteres que serán los únicos en cambiar al generar el diccionario, así los caracteres que podemos especificar para el patrón son: @ insertara minúsculas , insertara mayusculas % insertara numeros ^ insertara simbolos
(arroba) (coma) (porcentaje) (acento ^)
Sabiendo esto vamos a suponer que queremos generar un diccionario donde la primera letra sea en mayúscula, pero que a lo largo del mismo, tanto el 2do como el 3er caracter se queden fijos, pues para hacerlo agregamos una "," que tal como explique anteriormente insertará mayúsculas, pero recordemos que había un número en el password, así que también necesitamos insertar un solo número en el 7mo carácter de nuestra palabra, pues sólo contamos hasta el lugar número 7 e insertamos un "%" que como también expliqué anteriormente solo inserta números, el comando final quedaría como esto:
crunch 9 9 -t ,nd@@@%@@
(http://fotos.subefotos.com/1faba127713b4579d7b59431e975ec9bo.png)
Ahora vamos a generar un diccionario concatenando palabras debido a que algunas personas usan como password una serie de palabras unidas, por ejemplo alguien que le guste harry potter podría usar los nombres de Harry, Hermione y Ron como password y en ese caso generar simplemente por caracteres sería casi imposible dada la longitud final "harryhermioneron" así que en crunch existe una opción que nos permite concatenar palabras, veamos como: crunch 1 1 -p Harry Hermione Ron
Obtendríamos algo como esto:
(http://fotos.subefotos.com/e7d5e875c79488caf48b21deb62872a9o.png)
Con la opción -p es posible lograr concatenar palabras. Pero hay una particularidad, si se usa la opción -p los números no son procesados, pero son necesarios para el argumento, es decir que podremos colocar cualquier cosa y será irrelevante para la salida.
CÓMO USAR CRUNCH NIVEL 3 Hemos llegado al momento de usar nuestros diccionarios que hemos creado. Para esto debemos enviar la salida del comando a un archivo y guardarlo para que pueda ser usado convenientemente. Usando la opcion -o (output) seguido del nombre del archivo nos aseguramos que la aplicación irá guardando las palabras mientras las genera. Tomemos como ejemplo el ejercicio del diccionario creado con las palabras Harry Hermione y Ron y creemos un fichero: crunch 1 1 -o NombresPotter.txt -p Harry Hermione Ron
(http://fotos.subefotos.com/8af70f153ca64b4217c62c5c98a7eb57o.png) Opcionalmente también podemos especificar la ruta donde queremos volcar el diccionario, por ejemplo: crunch 1 1 -o /home/cl0udswx/Documentos/NombresPotter.txt -p Harry Hermione Ron
Vamos a avanzar un poco más profundo y hagamos que cada 5000 líneas crunch nos grabe un fichero. Puede ser que estemos limitados en capacidad del disco donde se creará el diccionario y podemos ir sacando algunas partes. También nos flexibiliza el tiempo al auditar la red, pudiendo analizar con algunos ficheros y continuar en otro momento con los restantes.
Para lograr esta división en la creación del diccionario en varios ficheros de menor tamaño usamos la opción -c num, donde num es la cantidad de palabras que tendrá cada archivo (esta opción solo funciona si el parámetro “-o START” está presente en la línea) por ejemplo: crunch 1 1 -o /home/cl0udswx/Documentos/START -c 5000
Esto inicia el proceso de crear múltiples ficheros con 5000 líneas cada uno, tal y como podemos ver en la imagen:
(http://fotos.subefotos.com/f3b46626d554f7f802a3aaa0d1d203ceo.png)
. El START funciona como nombre de archivo para el primer fichero a crear, a partir de ahí los ficheros tomaran el nombre de la última línea del archivo anterior y la primera línea del archivo posterior. Si visitamos la carpeta documentos, donde se crean los archivos nos encontraríamos con esto:
(http://fotos.subefotos.com/b170988f75cf8fe2674449013b89c6b4o.png) En algunos casos es posible llenar el disco duro al generar un diccionario, existen muchas posibilidades de combinaciones y puede que no tengamos espacio para guardarlas todas ej: crunch 15 25 -o demasiado.txt
(http://fotos.subefotos.com/0e8a057b5c74ac0137299570572d27bfo.png)
Eso es demasiado grande para cualquier disco duro actual 2017.
Pero entre tanto generamos, podemos crear un fichero y comprimirlo a bzip, de un solo golpe al agregar la opción -z seguida del tipo de compresión deseado, por ejemplo: crunch 4 5 -o /home/cl0udswx/Documentos/START -c 5000 -z gzip
De esta forma se iniciaría el mismo proceso anterior solo que en archivos comprimidos gzip u en cualquier otro formato soportado por crunch (gzip, bzip2, lzma, and 7z )
(http://fotos.subefotos.com/66c515f4027fa2d6487eed1953780d83o.png)
Ejercicios para practicar. Pues al inicio del post mi idea era explicar todas las funciones de crunch, pero se me ha ocurrido que sería interesante dejar que ustedes aporten su poco al post, así que les quise dejar 2 ejercicios para que los realicen y me los manden por MP y yo luego actualizar el post con el nombre y la solución. 1.- Cómo generar un diccionario que le pase la salida a aircrack-ng usando una tubería. El uso de tuberías en Linux permite enviar la salida de un comando a la entrada de otro. La forma tradicional es comando1 | comando2, donde la salida del comando1 es enviada a la entrada de comando2. Generador | utilidad crack. Al usar este formato, con ayuda de las opciones de aircrack podemos pasar palabra por palabra, sin forzar el disco ni la RAM. Debemos usar la opción: -e essid indicando el nombre de la red, -w diccionario sin el nombre del diccionario o sea – w- cerrado con el signo – Ej: crunch 10 10 0123456789 | aircrack-ng casa-08.cap
–
e casamia
w-
–
2.- Cómo generar un diccionario que no repita caracteres por línea y guardarlo en un comprimido (da igual el formato) Crunch 5 5 Para poder crear un diccionario de 6 caracteres de longitud, utilizando todos los caracteres existentes: crunch 6 6 -f charset.lst mixalpha-numeric-all-space Donde lo rojo seria la longitud mínima y la máxima. Lo verde seria el fichero charset.lst (si no tenemos el fichero en nuestro home entonces hay que especificar la ruta) Y lo azul seria la sección del charset que contiene todos los símbolos, números y el alfabeto tanto en minúsculas como en mayúsculas El comando genera un wordlist de 4 TB.
Echando un vistazo a ejemplos deberías probar en primer lugar generando de la "A" hasta la "G" a ver si funciona para proseguir. 1. Lista de palabras usando "abcdefg" empezando desde "A" hasta "G": Código: Bash
1. ./crunch 1 6 abcdefg Aprovecho para dejar un Script realizado por "elmanuvolador" de "seguridadwiriless" el cual te hará las cosas más fáciles. Quizás con este Script si puedas generar ese diccionario que necesitas. Dejo el script a continuación:
Código: Bash
1. #!/bin/bash 2. 3. clear 4. echo "" 5. echo " #######" 6. echo " #" 7. echo " #" 8. echo " #" 9. echo " elmanuvolador 10. echo " #" 11. echo " et #" 12. echo " #"
############################# # #
CRUNCH.SCRIPT
# #
Creado por
#" # # #
www.seguridadwireless.n
13. echo " ############################# #######" 14. sleep 4 15. clear 16. MIN="8" 17. MAX="10" 18. AIRCRACK="aircrack-ng " 19. CRUNCH="/pentest/password/crunch/crunch" 20. DUMP_PATH="/root/swireless/airoscript" 21. CHARSET="/pentest/password/crunch/charset.lst" 22. CHOICES="1 2 3 4 5 6 7 8 9" 23. function menu { 24. clear 25. echo "################################################## ############################" 26. AP SSID ==> $Host_SSID" echo "### 27. AP echo "### MAC ==> $Host_MAC" 28. RUTA .CAP ==> $ruta_CAP" echo "### 29. BUSCAR KEY ==> De $MIN a $MAX echo "### caracteres" 30. echo "################################################## ############################" 31. 1) Especificar SSID del echo "### AP ###" 32. 2) Especificar MAC del echo "### AP ###" 33. 3) Especificar Ruta del archivo echo "### .CAP ###" 34. 4) Especificar echo "### diccionario ###" 35. echo "################################################## ############################" 36. 5) Bruteforce echo "### (diccionario) ###" 37. 6) Bruteforce echo "### (personalizado) ###"
38. 7) Bruteforce (con echo "### patron) # ##" 39. echo "################################################## ############################" 40. 8) Numero de caracteres echo "### iniciales ###" 41. 9) Numero de caracteres echo "### finales ###" 42. echo "################################################## ############################" 43. } 44. #opcion 1 45. function entradassid { 46. echo 47. echo -n "Introduzca el SSID del AP: " 48. read Host_SSID 49. sleep 1 50. clear 51. menu 52. } 53. #opcion 2 54. function entradamac { 55. echo 56. echo -n "Introduzca la MAC del AP: " 57. read Host_MAC 58. sleep 1 59. ruta_CAP="$DUMP_PATH/$Host_MAC-01.cap" 60. clear 61. menu 62. } 63. #opcion 3 64. function entradaruta { 65. echo 66. echo -n "Introduzca la nueva ruta del archivo .CAP: " 67. read ruta_CAP1 68. sleep 1 69. ruta_CAP="$ruta_CAP1" 70. clear 71. menu 72. } 73. #opcion 6
74. function dicciomanual1 { 75. echo 76. echo -n "Introduzca los caracteres: " 77. read dicciomanual 78. sleep 1 79. ATAQUE1="$dicciomanual" 80. ataque1 81. } 82. #opcion 7 83. function patron { 84. clear 85. -Ejemplo para una contraseña de 8 echo " caracteres: @@ABCD@@" 86. donde ABCD se mantendran echo " inamovibles y las @ ira probando" 87. combinaciones con el diccionario echo " seleccionado en el menu." 88. echo "" 89. -Introduzca la longitud de la echo -n " contraseña (ejp: 8): " 90. read carac1 91. sleep 1 92. MIN="$carac1" 93. sleep 1 94. MAX="$carac1" 95. echo 96. -Introduzca los caracteres (ejp: echo -n " @@ABCD@@): " 97. read patron1 98. sleep 1 99. clear 100. ataque2 101. } 102. #opcion 8 103. function caracmin { 104. echo 105. echo -n "Introduzca el nuevo Numero de caracteres iniciales: " 106. read caracmin1 107. sleep 1 108. MIN="$caracmin1" 109. clear 110. menu 111. } 112. #opcion 9
113. function caracmax { 114. echo 115. echo -n "Introduzca el nuevo Numero de caracteres finales: " 116. read caracmax1 117. sleep 1 118. MAX="$caracmax1" 119. clear 120. menu 121. } 122. #opcion 4 123. function diccionario { 124. while true; do 125. clear 126. echo "################################################## ############################" 127. echo "### 1) Numeros ###" 128. echo "### 2) Minusculas ###" 129. echo "### 3) Mayusculas ###" 130. / echo "### 4) Numeros Espacio ###" 131. echo "### 5) Minusculas / Espacio ###" 132. echo "### 6) Mayusculas / Espacio ###" 133. echo "### 7) Minusculas / Numeros ###" 134. echo "### 8) Minusculas / Numeros / Espacio ###" 135. echo "### 9) Mayusculas / Numeros ###"
136. echo "### 10) Mayusculas / Numeros/ Espacio ###" 137. echo "### 11) Minusculas / Mayusculas ###" 138. echo "### 12) Minusculas / Mayusculas / Espacio ###" 139. echo "### 13) Minusculas / Mayusculas / Numeros ###" 140. echo "### 14) Minusculas / Mayusculas / Numeros / Espacio ###" 141. echo "### 15) Minusculas / Mayusculas / Numeros / Simbolos / Espacio ###" 142. echo "################################################## ############################" 143. echo "### 16) Abrir charset.lst (Plantillas de diccionarios) ###" 144. echo "### 17) Entrada manual del nombre de la plantilla ###" 145. echo "### 18) Volver al menu principal ###" 146. echo "################################################## ############################" 147. read yn 148. echo "" 149. case $yn in 150. 1 ) numeric1 ; break ;; 151. 2 ) lalpha1 ; break ;; 152. 3 ) ualpha1 ; break ;; 153. 4 ) numeric-space1 ; break ;; 154. 5 ) lalpha-space1 ; break ;; 155. 6 ) ualpha-space1 ; break ;; 156. 7 ) lalpha-numeric1 ; break ;; 157. 8 ) lalpha-numeric-space1 ; break ;; 158. 9 ) ualpha-numeric1 ; break ;; 159. 10 ) ualpha-numeric-space1 ; break ;; 160. 11 ) mixalpha1 ; break ;; 161. 12 ) mixalpha-space1 ; break ;; 162. 13 ) mixalpha-numeric1 ; break ;; 163. 14 ) mixalpha-numeric-space1 ; break ;; 164. 15 ) mixalpha-numeric-all-space1 ; break ;;
165. 16 ) opencharset ; break ;; 166. 17) manualcharset; break ;; 167. 18) break ;; 168. * ) echo "Opción desconocida. Elija de nuevo" ;; 169. esac 170. done 171. clear 172. } 173. #1 174. function numeric1 { 175. ATAQUE1=numeric 176. menu 177. } 178. #2 179. function lalpha1 { 180. ATAQUE1=lalpha 181. menu 182. } 183. #3 184. function ualpha1 { 185. ATAQUE1=ualpha 186. menu 187. } 188. #4 189. function numeric-space1 { 190. ATAQUE1=numeric-space 191. menu 192. } 193. #5 194. function lalpha-space1 { 195. ATAQUE1=lalpha-space 196. menu 197. } 198. #6 199. function ualpha-space1 { 200. ATAQUE1=ualpha-space 201. menu 202. } 203. #7 204. function lalpha-numeric1 { 205. ATAQUE1=lalpha-numeric 206. menu 207. } 208. #8
209. function lalpha-numeric-space1 { 210. ATAQUE1=lalpha-numeric-space 211. menu 212. } 213. #9 214. function ualpha-numeric1 { 215. ATAQUE1=ualpha-numeric 216. menu 217. } 218. #10 219. function ualpha-numeric-space1 { 220. ATAQUE1=ualpha-numeric-space 221. menu 222. } 223. #11 224. function mixalpha1 { 225. ATAQUE1=mixalpha 226. menu 227. } 228. #12 229. function mixalpha-space1 { 230. ATAQUE1=mixalpha-space 231. menu 232. } 233. #13 234. function mixalpha-numeric1 { 235. ATAQUE1=mixalpha-numeric 236. menu 237. } 238. #14 239. function mixalpha-numeric-space1 { 240. ATAQUE1=mixalpha-numeric-space 241. menu 242. } 243. #15 244. function mixalpha-numeric-all-space1 { 245. ATAQUE1=mixalpha-numeric-all-space 246. menu 247. } 248. #16 249. function opencharset { 250. konqueror /pentest/password/crunch/charset.lst*& 251. diccionario 252. }
253. #17 254. function manualcharset { 255. echo 256. echo -n "Introduzca el nombre de la plantilla (ejp: mixalpha): " 257. read plantilla 258. sleep 1 259. ATAQUE1="$plantilla" 260. clear 261. menu 262. } 263. #ataques 264. function ataque { 265. $CRUNCH $MIN $MAX -f $CHARSET $ATAQUE1 | $AIRCRACK -a 2 $ruta_CAP -e $Host_SSID -b $Host_MAC -w 266. echo"" 267. Presione ENTER para echo -n " volver al menu principal" 268. read 269. clear 270. menu 271. } 272. function ataque1 { 273. $CRUNCH $MIN $MAX $ATAQUE1 | $AIRCRACK -a 2 $ruta_CAP -e $Host_SSID -b $Host_MAC -w 274. echo"" 275. Presione ENTER para echo -n " volver al menu principal" 276. read 277. clear 278. menu 279. } 280. function ataque2 { 281. $CRUNCH $MIN $MAX -f $CHARSET $ATAQUE1 -t $patron1 | $AIRCRACK -a 2 $ruta_CAP -e $Host_SSID b $Host_MAC -w 282. echo"" 283. Presione ENTER para echo -n " volver al menu principal" 284. read 285. clear 286. menu 287. } 288. #opciones del menu principal
289. 290.
menu select choix in $CHOICES;
do
291. if [ "$choix" = "1" ]; then 292. entradassid 293. menu 294. elif [ "$choix" = "2" ]; then 295. entradamac 296. menu 297. elif [ "$choix" = "3" ]; then 298. entradaruta 299. menu 300. elif [ "$choix" = "4" ]; then 301. diccionario 302. menu 303. elif [ "$choix" = "5" ]; then 304. ataque 305. menu 306. elif [ "$choix" = "6" ]; then 307. dicciomanual1 308. menu 309. elif [ "$choix" = "7" ]; then 310. patron 311. menu 312. elif [ "$choix" = "8" ]; then 313. caracmin 314. menu 315. elif [ "$choix" = "9" ]; then 316. caracmax 317. menu 318. else 319. clear 320. menu 321. echo "################################################## ######################" 322. echo "### Opción incorrecta ###" 323. echo "################################################## ######################" 324. sleep 1 325. menu 326. fi
327. 328.
done #END