#!/bin/bash # DESC: para hacer diccionarios # Verifica si crunch está instalado if ! command -v crunch &> /dev/null; then echo "❌ Error: crunch no está instalado. Instalalo con:" echo "sudo apt install crunch" exit 1 fi echo "=== Generador de diccionarios con crunch ===" # Preguntar longitud mínima y máxima read -p "📏 Longitud mínima de la contraseña: " MIN read -p "📏 Longitud máxima de la contraseña: " MAX if ! [[ "$MIN" =~ ^[0-9]+$ && "$MAX" =~ ^[0-9]+$ ]]; then echo "❌ Error: La longitud debe ser un número entero." exit 1 fi # Opciones de caracteres echo -e "\n¿Qué tipos de caracteres querés usar?" read -p "✅ ¿Incluir minúsculas? (s/n): " OPT_MIN read -p "✅ ¿Incluir mayúsculas? (s/n): " OPT_MAY read -p "✅ ¿Incluir números? (s/n): " OPT_NUM read -p "✅ ¿Incluir símbolos (!@#\$%^&*...) ? (s/n): " OPT_SYM # Construir conjunto de caracteres CHARS="" [[ "$OPT_MIN" =~ ^[sS]$ ]] && CHARS+="abcdefghijklmnopqrstuvwxyz" [[ "$OPT_MAY" =~ ^[sS]$ ]] && CHARS+="ABCDEFGHIJKLMNOPQRSTUVWXYZ" [[ "$OPT_NUM" =~ ^[sS]$ ]] && CHARS+="0123456789" [[ "$OPT_SYM" =~ ^[sS]$ ]] && CHARS+="!@#$%^&*()-_=+[]{}|;:,.<>?/" # Validación if [[ -z "$CHARS" ]]; then echo "❌ Debés elegir al menos un tipo de carácter." exit 1 fi # Preguntar si se guarda el archivo read -p "💾 ¿Querés guardar el diccionario en un archivo? (s/n): " GUARDAR if [[ "$GUARDAR" =~ ^[sS]$ ]]; then read -p "📂 Ruta del archivo de salida (ej: diccionario.txt): " SALIDA echo "✅ Generando y guardando en $SALIDA..." crunch "$MIN" "$MAX" "$CHARS" -o "$SALIDA" echo "🎉 Diccionario generado exitosamente." else echo "✅ Mostrando en pantalla:" crunch "$MIN" "$MAX" "$CHARS" fi