← Back to Writeups
CUSTOMEasySteganography

Artemis Gordon

XESXOR9/10/20262 min read
#steganography#custom#easy#alphabet_identification#symbol_substitution#visual_pattern_matching#linux

Artemis Gordon

Platform: metactf | Category: Steganography | Type: Challenge | Difficulty: Easy | OS: Linux | Author: XESXOR | Date: 2026-04-10 | Status: Solved Techniques: alphabet_identification, symbol_substitution, visual_pattern_matching

Summary

Task: a PNG image containing moon-phase style symbols with no hidden metadata or embedded payloads. Solution: treat it as a visual symbol cipher, identify Leandro Katz's Lunar Alphabet, and decode the repeated glyph pattern as MOONMAN.

Artemis Gordon — metactf

Description

Original organizer description was not preserved locally; only the challenge image moonieface.png was available in the task directory.

The task provides a PNG image containing seven moon-phase style glyphs. The goal is to determine what alphabet those symbols belong to and decode the hidden word used inside the flag.

Analysis

Reconnaissance

The first step was standard file-level recon:

bash
file moonieface.png
strings moonieface.png
exiftool moonieface.png
pngcheck moonieface.png

This established that the file was an ordinary PNG. Metadata was not useful beyond a gnome-screenshot style tag, and pngcheck did not show suspicious chunk anomalies or embedded files. That ruled out the usual metadata / appended-data stego path.

At that point the image had to be solved visually. The important observation was that it contained seven distinct moon-phase style glyphs.

Identifying the alphabet

Because the symbols looked like stylized lunar phases, the next step was to search for moon-based alphabets rather than generic astronomical symbols. That led to Leandro Katz's Lunar Alphabet, whose glyph shapes matched the symbols in the image.

Decoding logic

The seven glyphs were not all unique. Their repetition pattern was:

  • positions 1 and 5 are the same
  • positions 2 and 3 are the same
  • positions 4 and 7 are the same

So the plaintext had the structure:

text
M O O N M A N

Once the symbols were matched against the Lunar Alphabet chart, the word decoded cleanly as:

text
MOONMAN

Solution

  1. Inspect the PNG with file, strings, exiftool, and pngcheck.
  2. Confirm there is no hidden payload in metadata or PNG chunks.
  3. Focus on the visible content: seven moon-phase glyphs.
  4. Search for a lunar-themed symbolic alphabet.
  5. Match the glyphs to Leandro Katz's Lunar Alphabet.
  6. Use the repeated-symbol structure to validate the reading as MOONMAN.
  7. Wrap the decoded word in the required flag format.
python
#!/usr/bin/env python3

# Manual decode after identifying Leandro Katz's Lunar Alphabet.
# The glyphs in the challenge image correspond to the letters below.

decoded = ["M", "O", "O", "N", "M", "A", "N"]
word = "".join(decoded)
flag = f"DawgCTF{{{word}}}"

print(word)
print(flag)