Bandit Nivel 11 a 12

Juego legal y educativo de terminal/Linux: OverTheWire Bandit.


Objetivo

Encontrar la contraseña del siguiente nivel (bandit12) dentro del archivo data.txt. El contenido está cifrado con ROT13: un cifrado de sustitución clásico donde cada letra del alfabeto se rota 13 posiciones hacia adelante.


Qué aprendes

Comandos

ComandoPara qué sirve
trTraduce (sustituye) caracteres de la entrada estándar según una tabla que tú defines
catLee el contenido de un archivo y lo vuelca a la salida estándar
| (pipe)Encadena la salida de un comando como entrada del siguiente

Conceptos

  • ROT13: cifrado César con desplazamiento fijo de 13 posiciones. Como el alfabeto inglés tiene 26 letras, aplicarlo dos veces devuelve el texto original. No es seguro como cifrado real; se usa para ofuscar texto (spoilers, etc.).
  • Cifrado por sustitución: cada letra se reemplaza por otra de forma sistemática. ROT13 es el caso más simple.
  • tr (translate): lee carácter a carácter y sustituye según los rangos que le pasas. No modifica el archivo original; trabaja sobre flujos (stdin → stdout).
  • Pipeline: la barra vertical | conecta la salida de cat con la entrada de tr, sin necesidad de archivos intermedios.

Paso a paso

1. Conectarse al nivel 11

Usa la contraseña que obtuviste en el nivel anterior (bandit11):

ssh [email protected] -p 2220

Verás el banner de bienvenida de OverTheWire y luego el prompt:

bandit11@bandit:~$

2. Verificar que data.txt existe

ls -lh

Lo que verás:

-rw-r----- 1 bandit12 bandit11 49 Apr 23 19:04 data.txt

El archivo pertenece a bandit12 (dueño) pero el grupo bandit11 puede leerlo — eso es lo normal en Bandit.

3. Ver el contenido cifrado

cat data.txt

Lo que verás (texto ilegible, ROT13 activo):

Gur cnffjbeq vf <pnqran_ra_ebg13_eryyrann_pbzb_rzcyrb_qr_cynprubyqre>

No es basura aleatoria: es inglés válido con cada letra desplazada 13 posiciones. Se puede leer pero no entender directamente.

4. Descifrar con tr

cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'

Lo que verás (texto descifrado, en inglés):

The password is <cadena_de_~32_caracteres>

Esa cadena de ~32 caracteres es la contraseña de bandit12. Copiala.


Por qué funciona

El comando tr 'A-Za-z' 'N-ZA-Mn-za-m' construye una tabla de sustitución:

Entrada:  A B C D E F G H I J K L M  N O P Q R S T U V W X Y Z
Salida:   N O P Q R S T U V W X Y Z  A B C D E F G H I J K L M

Y lo mismo para minúsculas. Lo que hace exactamente:

  • 'A-Za-z' — rango de caracteres que pueden llegar como entrada (todas las letras, mayúsculas y minúsculas).
  • 'N-ZA-Mn-za-m' — para cada letra de entrada, la letra correspondiente en este segundo rango. La truco es que N-Z son las 13 letras finales del alfabeto mayúscula, y A-M las 13 primeras, concatenadas. Esto logra el desplazamiento de 13.

Como ROT13 es su propio inverso (26 / 2 = 13), el mismo comando tanto cifra como descifra.

Alternativa con read en una sola línea sin pipe

tr 'A-Za-z' 'N-ZA-Mn-za-m' < data.txt

Mismo resultado. La redirección < alimenta tr desde el archivo directamente, sin pasar por cat. Ambas formas son correctas.


Errores comunes

ErrorCausaSolución
tr: extra operandEspacios o comillas mal escritas en el segundo argumentoAsegurarse de que los dos rangos van entre comillas simples separadas: 'A-Za-z' y 'N-ZA-Mn-za-m'
El output sigue siendo ilegiblePusiste el mismo rango en los dos argumentos o los intercambiasteRevisa que el primer argumento sea 'A-Za-z' y el segundo 'N-ZA-Mn-za-m'
No such file or directoryEstás en el directorio incorrectoEjecuta cd ~ para volver al home de bandit11
La contraseña no funciona en el siguiente nivelCopiaste espacios o el salto de línea finalCopia solo la cadena de caracteres, sin espacios alrededor

Pasar al siguiente nivel

Con la contraseña obtenida (la <cadena_de_~32_caracteres> que apareció al descifrar), conéctate a bandit12:

ssh [email protected] -p 2220

Cuando pida la password, pega la cadena copiada. Verás el prompt:

bandit12@bandit:~$

Ya estás en el nivel 12.


Conexiones