← All articles
Date Published: May 2026

Level 10-14

Levels from Level 10 to 14 explores encryption and basic networking.

Level 10

This level requires us to decode base64 to get the password.

Base64 is an encoding scheme that takes binary data and represents it using 64 printable characters. It processes the input in chunks of 24 bits (3 bytes), splits each 24-bit chunk into four 6-bit groups, and maps each 6-bit group to one of 64 characters. If the input length is not a multiple of 3 bytes, padding characters (=) may be added to make the output length a multiple of 4 characters.

shell

                $ base64 data.txt -d
                

Level 11

This level requires us to decrypt a rot13 encoding.

Rot 13 refers to a cipher where every alphabet is replaced by an alphabet which is 13 positions ahead of the current alphabet. There exists multiple approaches but for now we use python to solve this:

shell

                $ python3 -c "import codecs; print(codecs.encode('data', 'rot13'))"
                

Another approach would be to use `tr` which is short for translate which translates stdin from one format to other.

shell

                $ echo "text" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
                

In this, tr replaces characters listed in first string with corresponding character from second string. The first string 'A-Za-z' corresponds to 'ABCD...XYZabcd...xyz' total 52 characters and in the second string 'N-ZA-Mn-za-m' corresponds to 'NOPQ...XYZABCD...IJKLMnopq...xyzabc...jklm'.

Level 12

This level requires us to reverse a hexdump and deal with the file obtained.

First we reverse the hexdump using xxd command. A hexdump is a human-readable, textual representation of computer data where each byte of binary data is displayed as a two-digit hexadecimal number

shell

                $ xxd -r data.txt new1
                

Now using file we find out that the file is a compressed gzip file. To decompress we use gzip and to do that we need to first rename the file so that gzip can work with it.

shell

                $ mv new1 new1.gz
                $ gzip -d new1.gz
                

This cycle of finding out the file type and renaming it accordingly ( read the man pages! ).

shell

                $ bzip -d new.bz
                $ gzip -d new1.gz
                $ tar -x -f new1.tar 
                $ tar -x -f data5.bin 
                $ bzip2 -d data6.bz
                $ tar -x -f data6
                $ gzip -d data8.gz
                $ cat data8
                

Level 13

This level requires us to copy the private key to our local machine and use it to ssh into the next level and access the file from /etc/bandit_pass/bandit14

To accomplish this we use scp aka secure copy which in a secure manner, same as in ssh, from source to destination.

shell

                $ scp -P 2220 bandit13@bandit.labs.overthewire.org:/home/bandit13/sshkey.private
                

Now if we try to use this to ssh into the next level, we would get an error due to security reasons.This is because ssh wont let us use that key to login because other users can access this key. To fix this we change the permission so that other users except us cannot read or write to it.

shell

                $ chmod 600 sshkey.private
                

( read the man pages! )

shell

                $ ssh bandit14@bandit.labs.overthewire.org -p 2220 -i sshkey.private
                

Level 14

This level requires us to submit the password of the current level to port 30000 to localhost. To do this we use the netcat or nc utility which would open an connection to that port and send the data to it. ( to learn more about it, refer to the helpful reading material on the otw page. )

shell

                $ nc localhost 30000