Enchant
Category: Misc
Difficulty: Easy → Medium (if unfamiliar with encodings)
File: mystery.txt
Author’s hint: “I was playing minecraft, and found this strange enchantment on the enchantment table.”
TL;DR
The file text is mojibaked Unicode that should be re‑interpreted as Windows‑1252 bytes and then decoded as UTF‑8, revealing Standard Galactic Alphabet (SGA) glyphs (the Minecraft enchantment table script). Transliterate SGA → Latin to get:
minecraft is fun → Flag: scriptCTF{minecraftisfun}
Step‑by‑step (copy/paste into Notion)
1) Inspect the given text
Content provided:
ᒲ╎リᒷᓵ∷ᔑ⎓ℸ Ì£ ╎á“⎓âšãƒª
Clue mentions Minecraft and enchantment table → likely SGA.
2) Recognize mojibake
The text contains many characters like ╎
, ãƒ
, á’
—classic signs that UTF‑8 bytes were mis‑decoded as Windows‑1252 (aka cp1252). Our goal: reconstruct the original UTF‑8.
3) Fix the encoding
Use any one method below.
Method A — Python one‑liner
bad = "ᒲ╎リᒷᓵ∷ᔑ⎓ℸ Ì£ ╎á“⎓âšãƒª"
fixed = bad.encode("cp1252").decode("utf-8")
print(fixed)
Output:
ᒲ╎リᒷᓵ∷ᔑ⎓ℸ ̣ ╎ᓭ⎓⚍リ
Method B — CyberChef (no code)
- Paste the mojibaked string into the input.
- Operations:
- Encode Text → Windows‑1252 (this turns the visible text back into the original byte stream), then
- Decode Text → UTF‑8 (renders the intended Unicode).
- You should now see the SGA glyphs:
ᒲ╎リᒷᓵ∷ᔑ⎓ℸ ̣ ╎ᓭ⎓⚍リ
.
(If CyberChef’s “Magic” also works, great; but the two explicit steps above are deterministic.)
4) Identify the script (SGA)
The output visibly looks like the Minecraft enchantment table runes — that’s Standard Galactic Alphabet.
5) Transliterate SGA → Latin
For this phrase we only need the following glyphs:
SGA | Latin |
---|---|
ᒲ | m |
╎ | i |
リ | n |
ᒷ | e |
ᓵ | c |
∷ | r |
ᔑ | a |
⎓ | f |
ℸ | t |
ᓭ | s |
⚍ | u |
Transliteration:
ᒲ ╎ リ ᒷ ᓵ ∷ ᔑ ⎓ ℸ ╎ ᓭ ⎓ ⚍ リ
m i n e c r a f t i s f u n
→ “minecraft is fun”
6) Format the flag
The challenge says: “Wrap the flag in scriptCTF{}
” and no spaces.
Final:
scriptCTF{minecraftisfun}
Verification / Automation Snippets
Quick Python checker
bad = "ᒲ╎リᒷᓵ∷ᔑ⎓ℸ Ì£ ╎á“⎓âšãƒª"
fixed = bad.encode("cp1252").decode("utf-8")
# Minimal map for letters seen in this challenge
sga_map = {
"ᒲ":"m","╎":"i","リ":"n","ᒷ":"e","ᓵ":"c",
"∷":"r","ᔑ":"a","⎓":"f","ℸ":"t","ᓭ":"s","⚍":"u"
}
plain = "".join(sga_map.get(ch, ch) for ch in fixed)
flag = "scriptCTF{" + plain.replace(" ", "") + "}"
print(fixed) # SGA text
print(plain) # minecraft is fun
print(flag) # scriptCTF{minecraftisfun}
Common pitfalls & tips
- Wrong direction in CyberChef: Make sure you encode as cp1252 first (to bytes), then decode as UTF‑8.
- Combining dot below (U+0323) after ℸ: You might see
ℸ ̣
— it’s just a combining mark; doesn’t affect the message.
- Online SGA charts vary visually but the mapping for these glyphs is consistent.
- If you see lots of
Ã
,â
,ã
in a CTF string, think mojibake.