Skip to main content

mus1c picoCTF 2019 Solution

Decode a message written in an esoteric programming language that uses song lyrics as code.

Published: April 2, 2026Updated: August 13, 2026

Description

I made a song. Can you put my song in the picoCTF flag format? The lyrics are a valid Rockstar program - run them through a Rockstar interpreter to get the numbers, then convert to ASCII.

Downloadlyrics.txt

Download the lyrics file.

Find a Rockstar language interpreter online (saira.rocks or similar).

Solution

Want to try it yourself first?

The guided walkthrough reveals hints one step at a time.

Walk me through it
  1. Step 1Recognize that the lyrics are a Rockstar program
    Observation
    The lyrics file reads as English sentences, with lines like 'Tommy was a dancer' and variables such as 'my heart'. Those are the hallmarks of Rockstar, an esoteric language, so this is code to run rather than text to read.
    The lyrics are a valid program in Rockstar, an esoteric programming language by Dylan Beattie where valid programs read like rock song lyrics. Copy the entire lyrics file contents and paste it into an online Rockstar interpreter. Running the program outputs a sequence of numbers.
    Learn more

    Rockstar is an esoteric programming language created in 2018 by Dylan Beattie as a joke that went viral. Programs must be syntactically valid rock song lyrics. Variable names can be phrases like "my heart" or "the night", and assignment uses lyrics like "Tommy was a dancer" (sets Tommy to 16: the words after "was" each give one digit by letter count, so "a" is 1 and "dancer" is 6, concatenated to 16). Online interpreters are available at saira.rocks and other sites.

    This is a great example of an esoteric language (esolang) - a programming language designed for entertainment, art, or to explore unusual paradigms rather than practical use. Other famous esolangs: Brainfuck (minimalist with only 8 operators), Malbolge (deliberately nearly impossible to write), and Whitespace (programs encoded entirely in whitespace characters).

  2. Step 2Run the Rockstar program and convert output to ASCII
    Observation
    The interpreter prints plain decimal integers in the 32-126 range, which is exactly printable ASCII. Feeding each one through Python's chr() should spell out the flag.
    Paste the lyrics into a Rockstar interpreter online. The program outputs a sequence of decimal numbers. Convert each number to its ASCII character using Python to reveal the flag.
    bash
    # After getting the numbers from the Rockstar interpreter:
    python
    python3 -c "nums = [<paste numbers here>]; print(''.join(chr(n) for n in nums))"

    Expected output

    picoCTF{rrrocknrn0113r}
    What didn't work first

    Tried: Paste the lyrics into a Brainfuck or Befunge interpreter instead of a Rockstar interpreter

    Other esolang interpreters throw syntax errors or emit garbage, because the lyrics follow Rockstar grammar rather than Brainfuck operators or Befunge grid rules. The tell is that Rockstar programs read as English sentences with verbs like 'was' and 'said', not strings of +[].,< characters.

    Tried: Treat the interpreter's output as raw text or hex instead of decimal ASCII codes

    The Rockstar program prints plain decimal integers like 114, not hex like 0x72. Running them through int('72', 16) gives entirely the wrong characters. Use chr(n) on the base-10 integer the interpreter printed.

    Learn more

    The numbers output by the Rockstar program are ASCII decimal codes. chr(n) in Python converts each integer to its corresponding character. The sequence of characters spells the flag content to put inside picoCTF{...}.

    ASCII decimal codes for the flag-relevant range: uppercase A=65, lowercase a=97, digits start at 48, and common punctuation falls between 33 and 126. If the numbers look plausibly like ASCII codes (roughly 32-126), converting them with chr() is the right move.

Interactive tools
  • Base64 & Base32 DecoderDecode Base64 and Base32 strings with auto-detection. Multi-layer mode unwraps nested encodings automatically.
  • Recipe ChainStack decoders into a pipeline: Base64, hex, ROT, XOR, Morse, URL, Atbash, Vigenère, and more. Magic mode auto-discovers the chain. Bookmark the URL to save it.
  • Number Base ConverterConvert numbers between binary, octal, decimal, and hexadecimal instantly. Enter any value and see all four bases update in real time.

Flag

Reveal flag

picoCTF{rrrocknrn0113r}

The lyrics are a Rockstar program - run them in an online Rockstar interpreter to get numbers, then convert those numbers to ASCII to find the flag.

Key takeaway

Esoteric languages hide computation in unconventional syntax, and spotting that a block of text is actually executable code is a real reverse-engineering skill. The same move comes up with Brainfuck, Malbolge, and Whitespace: step one is always identifying the language from its structural fingerprints. After that, a public interpreter gets you output far faster than writing your own.

Related reading

Useful tools for General Skills

Where to go next