Bandit Nivel 8 a 9

Nivel del wargame educativo OverTheWire Bandit. El objetivo es encontrar la contraseña del nivel 9 dentro de un archivo de texto con miles de líneas.


Objetivo

La contraseña está en el archivo data.txt. El truco: ese archivo contiene muchas líneas repetidas, y la contraseña es la única línea que aparece exactamente una vez. Todas las demás líneas están duplicadas o más.


Qué aprendes

Comando / ConceptoPara qué sirve
sortOrdena las líneas de un archivo alfabéticamente
uniqFiltra líneas consecutivas duplicadas
uniq -uMuestra solo las líneas que aparecen una sola vez
Pipe |Encadena la salida de un comando como entrada del siguiente

Concepto clave — por qué uniq necesita sort antes: uniq solo compara líneas consecutivas. Si dos líneas idénticas están separadas por otras líneas diferentes, uniq no las detecta como duplicadas. Al aplicar sort primero, todas las líneas iguales quedan juntas, y entonces uniq puede hacer su trabajo correctamente.


Paso a paso

1. Conectarse al nivel 8

ssh bandit8@bandit.labs.overthewire.org -p 2220

Cuando pregunte la contraseña, pega la que obtuviste en el nivel anterior (la del nivel 8).

2. Verificar que el archivo existe

ls -lh data.txt

Verás algo como:

-rw-r----- 1 bandit9 bandit8 33033 Apr 23 18:00 data.txt

El archivo pesa unos 33 KB — demasiado para leerlo a mano.

3. Curiosear cuántas líneas tiene

wc -l data.txt

Salida esperada:

1001 data.txt

Más de mil líneas. Buscar visualmente es inviable.

4. Ver cómo son las líneas (opcional, para entender el problema)

head -20 data.txt

Verás líneas que parecen cadenas aleatorias, muchas de ellas repetidas:

<contrasena>
<contrasena>
<contrasena>
<contrasena>
<contrasena>
...

5. La solución: ordenar y filtrar únicos

sort data.txt | uniq -u

Salida esperada (una sola línea):

<cadena_de_~32_caracteres>

Esa cadena es la contraseña del nivel 9. Cópiala.


Por qué funciona

El pipeline sort data.txt | uniq -u hace dos cosas en secuencia:

  1. sort data.txt reordena todas las líneas alfabéticamente. El resultado es que las líneas idénticas quedan pegadas unas junto a otras.

  2. uniq -u recorre la lista ya ordenada y descarta cualquier línea que aparezca más de una vez en bloques consecutivos. Solo deja pasar las que no tienen vecinas iguales.

Si intentaras ejecutar solo uniq -u data.txt (sin sort), el resultado sería incorrecto: las líneas repetidas que no están consecutivas pasarían el filtro sin ser eliminadas.

Analogía: imagina ordenar un mazo de cartas por valor antes de buscar el comodín. Si las cartas están desordenadas, el comodín podría estar entre dos reyes y no lo reconocerías como único.


Errores comunes

ErrorCausaSolución
uniq -u data.txt devuelve varias líneasSe saltó el sort; uniq no detecta duplicados no consecutivosUsar siempre sort | uniq -u
El resultado está vacíoSe usó uniq sin -u, que muestra una copia de cada línea sin importar cuántas veces apareceAñadir la flag -u
Permission denied en data.txtSe intentó leer como el usuario equivocadoVerificar que se conectó como bandit8
La contraseña copiada tiene espacios extraSe copió mal al pegar en la terminalCopiar solo la cadena sin espacios ni saltos de línea

Pasar al siguiente nivel

Con la contraseña obtenida, conéctate al nivel 9:

ssh bandit9@bandit.labs.overthewire.org -p 2220

Pega <cadena_de_~32_caracteres> cuando pida la contraseña.


Conexiones