diff --git a/30-days-of-python/README.md b/30-days-of-python/README.md
index 52f05ec..4a5776d 100644
--- a/30-days-of-python/README.md
+++ b/30-days-of-python/README.md
@@ -3,7 +3,7 @@
Estos apuntes y ejercicios en python han sido realizados siguiendo un repositorio de [Asabeneh](https://github.com/Asabeneh):
- [30 Days of Python](https://github.com/Asabeneh/30-Days-Of-Python)
-El reposotorio original está en inglés, pero he traducido los ejercicios al español, así como los apuntes que he creído convenientes resaltar.
+El repositorio original está en inglés, pero he traducido los ejercicios al español, así como los apuntes que he creído convenientes resaltar.
## Índice del curso y apuntes realizados
diff --git a/README.md b/README.md
index c6ead7e..87028a3 100644
--- a/README.md
+++ b/README.md
@@ -2,13 +2,14 @@
Este repositorio contiene los apuntes tomados en diversos cursos de python reflejados en la siguiente tabla:
-| Curso | Ubicación | Nivel | Duración de vídeos | Duración personal aprox. | Fuente original |
-| --------------------: | :---------------------------------------------- | :--------: | :----------------: | :----------------------: | :------------------------------------------------------------------------------------------------------ |
-| HolaMundo | [contenidos](./HolaMundo/README.md) | Bajo | 5 horas | 15 horas | [Aprende python ahora!](https://www.youtube.com/watch?v=tQZy0U8s9LY&ab_channel=HolaMundo) |
-| Python total | [contenidos](./python-total/README.md) | Intermedio | 30 horas | 200 horas | [Escuela Directa](https://www.udemy.com/course/python-total) |
-| Python y ChatGPT | [contenidos](./python-chatgpt/README.md) | Intermedio | 2 horas | 15 horas | [Escuela Directa](https://www.udemy.com/course/python-chatgpt/), [ChapGPT](https://www.chat.openai.com) |
-| scripts-hacking-etico | [contenidos](./scripts-hacking-etico/README.md) | Avanzado | --- | 5 horas | [ChapGPT](https://www.chat.openai.com), [Canal Telegram](https://t.me/seguridadinformatic4) |
-| 30 days of python | [contenidos](./30-days-of-python/README.md) | Intermedio | --- | próximamente | [Repo Asabeneh](https://github.com/Asabeneh/30-Days-Of-Python) |
+| Nombre del curso
y ubicación | Nivel | Duración
de vídeos | Duración personal
aprox. | Fuente original |
+| ---------------------------------------------------------: | :--------: | :---------------------: | :---------------------------: | :------------------------------------------------------------------------------------------------------ |
+| [HolaMundo](./HolaMundo/README.md) | Bajo | 5 horas | 15 horas | [Aprende python ahora!](https://www.youtube.com/watch?v=tQZy0U8s9LY&ab_channel=HolaMundo) |
+| [Python total](./python-total/README.md) | Intermedio | 30 horas | 200 horas | [Escuela Directa](https://www.udemy.com/course/python-total) |
+| [Python y ChatGPT](./python-chatgpt/README.md) | Intermedio | 2 horas | 15 horas | [Escuela Directa](https://www.udemy.com/course/python-chatgpt/), [ChapGPT](https://www.chat.openai.com) |
+| [30 days of python](./30-days-of-python/README.md) | Intermedio | --- | próximamente | [Repo Asabeneh](https://github.com/Asabeneh/30-Days-Of-Python) |
+| [scripts-hacking-etico](./scripts-hacking-etico/README.md) | Avanzado | --- | 5 horas | [ChapGPT](https://www.chat.openai.com), [Canal Telegram](https://t.me/seguridadinformatic4) |
+| [Cajón de sastre](./Catch-all/README.md) | Intermedio | --- | continua | [Personal](https://vergaracarmona.es) |
Las prácticas y ejercicios aquí contenidos son los que hice mediante los cursos mencionados o por investigación propia, con mucho café para combatir el insomnio. Realmente, los apuntes no fueron pensados para compartirlos, por ello pueden tener lagunas de información o contenido adicional respecto al curso, ya que se redactaron para recordar procedimientos y conceptos que EMHO me parecieron relevantes. Teniendo estos documentos tan completos y entendiendo que el conocimiento debe ser libre, se decidió compartirlos. Si encuentras **cualquier error puedes abrir una issue o contactar conmigo**.
diff --git a/catch-all/01_scripts_words_linux/random_pass.py b/catch-all/01_scripts_words_linux/random_pass.py
new file mode 100644
index 0000000..a9d916f
--- /dev/null
+++ b/catch-all/01_scripts_words_linux/random_pass.py
@@ -0,0 +1,53 @@
+"""
+Random Password Generator
+=========================
+Genera una contraseña aleatoria con el número
+de palabras que indiques a partir de un archivo
+de palabras de Linux ubicado en la mayoría
+de las distribuciones en /usr/share/dict/words
+
+Despues, pregunta al usuario si desea mezclar
+las letras de la contraseña generada.
+"""
+import random
+
+# Ruta al archivo de palabras en Linux (puede variar según la distribución)
+word_file = '/usr/share/dict/words'
+
+# Función para generar una contraseña aleatoria
+
+
+def generate_password(word_file, num_words):
+ with open(word_file, 'r') as file:
+ words = [line.strip() for line in file.readlines()]
+
+ # Seleccionar un número de palabras al azar
+ password_words = random.sample(words, num_words)
+
+ # Combinar las palabras para formar la contraseña
+ password = ''.join(password_words)
+
+ return password
+
+# Función para mezclar las letras de una cadena
+
+
+def shuffle_letters(input_string):
+ letters = list(input_string)
+ random.shuffle(letters)
+ return ''.join(letters)
+
+
+# Preguntar al usuario cuántas palabras desea en la contraseña
+num_words = int(input("Número de palabras para la contraseña: "))
+
+# Generar una contraseña aleatoria con el número de palabras especificado
+random_password = generate_password(word_file, num_words)
+print("Contraseña aleatoria generada:", random_password)
+
+# Preguntar al usuario si desea mezclar las letras
+mezclar_letras = input(
+ "¿Desea mezclar las letras de la contraseña? (s/n): ").lower()
+if mezclar_letras == 's':
+ random_password = shuffle_letters(random_password)
+ print("Contraseña con letras mezcladas:", random_password)
diff --git a/catch-all/01_scripts_words_linux/random_text.py b/catch-all/01_scripts_words_linux/random_text.py
new file mode 100644
index 0000000..f05dc67
--- /dev/null
+++ b/catch-all/01_scripts_words_linux/random_text.py
@@ -0,0 +1,42 @@
+"""
+random text generator
+=====================
+Genera un texto aleatorio a partir de un archivo
+de palabras de Linux ubicado en la mayoría
+de las distribuciones en /usr/share/dict/words
+
+Pregunta al usuario el número de párrafos
+y palabras por párrafo.
+
+Se puede utilizar a modo de lorem ipsum.
+"""
+import random
+
+# Ruta al archivo de palabras en Linux (puede variar según la distribución)
+word_file = '/usr/share/dict/words'
+
+# Función para generar texto aleatorio
+
+
+def generate_random_text(word_file, num_words=50):
+ with open(word_file, 'r') as file:
+ words = [line.strip() for line in file.readlines()]
+
+ # Seleccionar un número de palabras al azar
+ random_words = random.sample(words, num_words)
+
+ # Combinar las palabras para formar el texto
+ random_text = ' '.join(random_words)
+
+ return random_text
+
+
+# Preguntar al usuario el número de párrafos y palabras por párrafo
+num_paragraphs = int(input("Número de párrafos a generar: "))
+num_words_per_paragraph = int(input("Número de palabras por párrafo: "))
+
+# Generar los párrafos de texto aleatorio
+print("Texto aleatorio generado:")
+for _ in range(num_paragraphs):
+ random_paragraph = generate_random_text(word_file, num_words_per_paragraph)
+ print(random_paragraph, "\n")
diff --git a/catch-all/README.md b/catch-all/README.md
new file mode 100644
index 0000000..d267754
--- /dev/null
+++ b/catch-all/README.md
@@ -0,0 +1,11 @@
+# Ejercicios del cajón de sastre Python
+
+Aquí iré dejando scripts y ejercicios que se me ocurran, con lo que no hay un orden ni un objetivo concreto. Simplemente, me apetece ir practicando y aprendiendo Python.
+
+
+
+## Índice de ejercicios
+
+| Nombre | Descripción | Nivel |
+| ---------------------------------------: | :--------------------------------------------- | :--------: |
+| [Words Linux](./01_scripts_words_linux/) | Scritp con el fichero: `/usr/share/dict/words` | intermedio |