HACKvent 2015: Day 2

Hackvent 20158790

Challenge

Clue: I wonder if this is the native language of one of you!

pagh wa'vatlh netlh wa'maH wa'maH wa' SaD wa' SaD wa'vatlh wa' wa'maH wa'maH wa'vatlh wa'maH wa' wa'maH wa'maH netlh pagh wa'maH wa' wa'vatlh wa' wa'vatlh SaD SaD wa' wa'vatlh netlh wa'maH wa' wa'maH wa'maH wa'vatlh wa' wa'maH wa'maH wa' wa' wa'vatlh SaD wa' wa'maH wa'maH wa'maH wa'vatlh wa'maH SaD wa'maH wa' wa'maH wa'maH wa' wa' wa' wa'maH wa'vatlh wa' wa'vatlh wa' SaD wa' SaD wa'maH wa' wa' wa'maH wa' SaD  wa'maH wa' wa'maH wa'maH wa'vatlh wa'maH wa' wa'vatlh wa' wa'maH wa' wa' wa'maH wa' netlh wa'maH wa'vatlh wa' wa' wa' wa'vatlh wa'maH wa' wa'maH wa'maH SaD wa' wa'vatlh wa'maH SaD wa'vatlh wa' wa'maH SaD wa' wa'maH SaD

Solution

After some Googling I realise this is the Klingon language from Star Trek.
I try some online translators (including Bing!) and it is clear that the message is a series of numbers that containor 1 only.
This is most likely binary that represents ASCII text.

I write a small script to convert each component in the text (based on a Klingon number guide):

import sys

text = """pagh wa'vatlh netlh wa'maH wa'maH wa' SaD wa' SaD wa'vatlh wa' wa'maH wa'maH wa'vatlh wa'maH wa' wa'maH wa'maH netlh pagh wa'maH wa' wa'vatlh wa' wa'vatlh SaD SaD wa' wa'vatlh netlh wa'maH wa' wa'maH wa'maH wa'vatlh wa' wa'maH wa'maH wa' wa' wa'vatlh SaD wa' wa'maH wa'maH wa'maH wa'vatlh wa'maH SaD wa'maH wa' wa'maH wa'maH wa' wa' wa' wa'maH wa'vatlh wa' wa'vatlh wa' SaD wa' SaD wa'maH wa' wa' wa'maH wa' SaD  wa'maH wa' wa'maH wa'maH wa'vatlh wa'maH wa' wa'vatlh wa' wa'maH wa' wa' wa'maH wa' netlh wa'maH wa'vatlh wa' wa' wa' wa'vatlh wa'maH wa' wa'maH wa'maH SaD wa' wa'vatlh wa'maH SaD wa'vatlh wa' wa'maH SaD wa' wa'maH SaD"""

for word in text.split():
  if word == "pagh":
    sys.stdout.write(str(0))
  elif word == "wa'maH":
    sys.stdout.write(str(10))
  elif word == "wa'vatlh":
    sys.stdout.write(str(100))
  elif word == "wa'":
    sys.stdout.write(str(1))
  elif word == "SaD":
    sys.stdout.write(str(1000))
  elif word == "netlh":
    sys.stdout.write(str(10000))
  else:
    print "ERROR! Unknown"

This prints out some binary:

0100100001010110001100010011010100101101010000010110011001000100011001000010110101001101011100100011010101001010001011010111101001100110001100010111011000101101010010110011011101100001010011110010110101000110010100010011010001101000

Total number of bits is 232 and 232/8 bits = 29 bytes.
This is exactly the number of characters in our nugget!

We convert the binary to ASCII and get the flag:

HV15-AfDd-Mr5J-zf1v-K7aO-FQ4h

Leave a comment

(required)(will not be published)(required)

Comments

There are no comments yet. Be the first to add one!