← Back to Writeups
CUSTOMEasyMisc

How Does That Sound?

XESXOR9/2/20262 min read
#misc#custom#easy#morse_decoding#custom_symbol_mapping

How Does That Sound?

Platform: hackerlab | Category: Misc | Type: Challenge | Difficulty: Easy | OS: NA | Author: XESXOR | Date: 2025-04-17 | Status: Solved Techniques: morse_decoding, custom_symbol_mapping

Summary

Task: a text file contains only three speaker-volume emojis and a hint about hearing. Solution: treat the muted emoji as a token separator, map the other two symbols to Morse dot and dash, decode the uppercase plaintext, and use it unchanged inside the flag format.

How Does That Sound? — hackerlab

Description

Как слышно? Вам хорошо слышно? Просим прощения за такое неудобство :(

English summary: the challenge provides a single text file made only of speaker emojis. The goal is to recognize the encoding scheme and recover the flag text.

Analysis

The file contains only three distinct symbols:

  • 🔊
  • 🔉
  • 🔇

That is a strong sign of a custom symbolic encoding. The muted speaker 🔇 is visually different from the other two and appears in positions that split the line into short chunks, so it makes sense to treat it as a separator. ‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍

After splitting on 🔇, the remaining groups are:

text
🔊🔉🔊🔊 / 🔊🔊🔊 / 🔉🔉🔊 / 🔊🔉🔊🔉 / 🔉🔊 / 🔊🔉 / 🔉🔉🔉🔉 / 🔉 / 🔉🔊 / 🔉🔊🔉 / 🔊🔊 / 🔉 / 🔉🔊🔉 / 🔉🔉 / 🔊🔊🔉 / 🔉🔉🔉🔉 / 🔊 / 🔉🔉🔊🔊🔉🔉

The title mentions hearing, so Morse code is a natural guess. Using:

  • 🔉 → .
  • 🔊 → -
  • 🔇 → separator

we get:

text
-.-- / --- / ..- / -.-. / .- / -. / .... / . / .-. / .-. / -- / . / .-. / .. / --. / .... / - / ..--..

This decodes to:

text
REDACTED

The accepted flag was the raw uppercase plaintext inside CODEBY{...}. An important pitfall is that alternative normalization attempts such as lowercase text or inserting underscores were not accepted. ‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍

Solution

  1. Read the emoji line from file.txt.
  2. Split the string on 🔇 to obtain Morse tokens.
  3. Replace 🔉 with . and 🔊 with -.
  4. Decode each Morse token.
  5. Keep the recovered plaintext exactly as shown and wrap it as CODEBY{REDACTED}.
python
#!/usr/bin/env python3

data = "🔊🔉🔊🔊🔇🔊🔊🔊🔇🔉🔉🔊🔇🔊🔉🔊🔉🔇🔉🔊🔇🔊🔉🔇🔉🔉🔉🔉🔇🔉🔇🔉🔊🔇🔉🔊🔉🔇🔊🔊🔇🔉🔇🔉🔊🔉🔇🔉🔉🔇🔊🔊🔉🔇🔉🔉🔉🔉🔇🔊🔇🔉🔉🔊🔊🔉🔉"

morse_to_text = {
    ".-": "A", "-...": "B", "-.-.": "C", "-..": "D", ".": "E",
    "..-.": "F", "--.": "G", "....": "H", "..": "I", ".---": "J",
    "-.-": "K", ".-..": "L", "--": "M", "-.": "N", "---": "O",
    ".--.": "P", "--.-": "Q", ".-.": "R", "...": "S", "-": "T",
    "..-": "U", "...-": "V", ".--": "W", "-..-": "X", "-.--": "Y",
    "--..": "Z", "..--..": "?"
}
‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍

tokens = data.split("🔇")
morse = [token.replace("🔉", ".").replace("🔊", "-") for token in tokens]
plaintext = "".join(morse_to_text[token] for token in morse)

print(plaintext)
print(f"CODEBY{{{plaintext}}}")

‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍