mus1c picoCTF 2019 Solution

Published: April 2, 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 1
    Recognize that the lyrics are a Rockstar program
    Observation
    I noticed the lyrics file contained natural English sentences with constructs like 'Tommy was a dancer' and variable-like phrases such as 'my heart', which are hallmarks of the Rockstar esoteric language and suggested running them through a Rockstar interpreter rather than reading them as ordinary text.
    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 2
    Run the Rockstar program and convert output to ASCII
    Observation
    I noticed the Rockstar interpreter printed a sequence of plain decimal integers in the 32-126 range, which is exactly the printable ASCII range and suggested converting each number with Python's chr() to reveal the flag characters.
    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 will throw syntax errors or produce garbage output because the lyrics follow Rockstar grammar, not Brainfuck operators or Befunge grid rules. The key tell is that Rockstar programs read as natural English sentences with verbs like 'was' and 'said', not as sequences of +[].,< characters.

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

    The Rockstar program prints decimal integers such as 114 or 114, not hex like 0x72 or characters directly. Passing the output to int('72', 16) or similar hex conversion yields wrong characters entirely. The correct step is chr(n) in Python where n is the plain 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 programming languages encode computation in unconventional syntax, and recognizing that a piece of text is executable code in an unusual language is a genuine reverse-engineering skill. The same pattern appears in CTFs with Brainfuck, Malbolge, Whitespace, and other esolangs where the first step is always identifying the language from its structural fingerprints. Once identified, running the program through a public interpreter or transpiler is nearly always the fastest path to output, since writing a custom interpreter from scratch is unnecessary.

Related reading

Want more picoCTF 2019 writeups?

Useful tools for General Skills

What to try next