← Back to Writeups
CUSTOMEasySteganography

Duck You!

XESXOR9/2/20263 min read
#steganography#custom#easy#inserted_character_extraction#typo_analysis

Duck You!

Platform: spbctf | Category: Steganography | Type: Challenge | Difficulty: Easy | OS: NA | Author: XESXOR | Date: 2026-03-09 | Status: Solved Techniques: inserted_character_extraction, typo_analysis

Summary

Task: Wikipedia article with hidden message in typos. Solution: Extract extra letters inserted into misspelled words to reveal the flag.

Duck You! - Forensics Kids 2.0

Description

"В этом тексте спрятаны слова, но мы не понимаем, как. Помогите!" (Words are hidden in this text, but we don't understand how. Help!)

Given file duckyou.txt (5020 bytes) - a Wikipedia article about the fulvous whistling duck.

Analysis

Upon careful reading of the text, numerous typos were discovered - extra letters inserted into words. The text looks like a regular Wikipedia article but contains systematic errors.

Key observation: each "misspelled" word contains exactly one extra letter inserted in the middle or at the end of the word. ‍​‌‌​​​​‌​‌‌​​‌‌​​‌‌​​‌‌​​‌‌​​‌​​​​‌‌​​​​​‌‌​​‌‌​​‌‌​​‌​‌​‌‌​​‌​‌‍

Solution

Step 1: Identifying all typos

By comparing words with correct English spelling, all inserted letters were identified:

Word in textCorrect wordExtra letter
thaytthaty
witehwithe
buetbute
paredationpredationa
lhargelargeh
disticnctivedistinctivec
AnatoidaeAnatidaeo
mainnmainn
LatgeLateg
soutrhernsouthernr
ducakducka
preoctcupiedpreoccupiedt
17s871787s
ornithotlogistornithologistt
spehcimenspecimenh
moveedmovede
BrfitishBritishf
namlenamel
cygnauscygnusa
includgeincludeg
MexiicanMexicani
whistlisngwhistlings
averadgesaveragesd
maiunlymainlyu
dcowndownc
flankksflanksk
jiuvenilejuvenilei
dulllerdullerl
flianksflanksi
birdssbirdss
arehareh
throughioutthroughouti
cleoarclearo
produuceproduceu
tshethes
dlucksducksl
whitey-facedwhite-facedy
‍​‌‌​​​​‌​‌‌​​‌‌​​‌‌​​‌‌​​‌‌​​‌​​​​‌‌​​​​​‌‌​​‌‌​​‌‌​​‌​‌​‌‌​​‌​‌‍

Step 2: Assembling the hidden message

Concatenating all extra letters in order of appearance in the text:

yeeahcongratstheflagisREDACTED

Splitting into words:

yeeah congrats the flag is REDACTED
python
#!/usr/bin/env python3
"""
Duck You! - Text Steganography via Inserted Characters
Forensics Kids 2.0
"""

# List of found typos: (word_in_text, correct_word, extra_letter)
typos = [
    ("thayt", "that", "y"),
    ("witeh", "with", "e"),
    ("buet", "but", "e"),
    ("paredation", "predation", "a"),
    ("lharge", "large", "h"),
    ("disticnctive", "distinctive", "c"),
    ("Anatoidae", "Anatidae", "o"),
    ("mainn", "main", "n"),
    ("Latge", "Late", "g"),
    ("soutrhern", "southern", "r"),
    ("ducak", "duck", "a"),
    ("preoctcupied", "preoccupied", "t"),
    ("17s87", "1787", "s"),
    ("ornithotlogist", "ornithologist", "t"),
    ("spehcimen", "specimen", "h"),
    ("moveed", "moved", "e"),
    ("Brfitish", "British", "f"),
    ("namle", "name", "l"),
    ("cygnaus", "cygnus", "a"),
    ("includge", "include", "g"),
    ("Mexiican", "Mexican", "i"),
    ("whistlisng", "whistling", "s"),
    ("averadges", "averages", "d"),
    ("maiunly", "mainly", "u"),
    ("dcown", "down", "c"),
    ("flankks", "flanks", "k"),
    ("jiuvenile", "juvenile", "i"),
    ("dulller", "duller", "l"),
    ("flianks", "flanks", "i"),
    ("birdss", "birds", "s"),
    ("areh", "are", "h"),
    ("throughiout", "throughout", "i"),
    ("cleoar", "clear", "o"),
    ("produuce", "produce", "u"),
    ("tshe", "the", "s"),
    ("dlucks", "ducks", "l"),
    ("whitey-faced", "white-faced", "y"),
]
‍​‌‌​​​​‌​‌‌​​‌‌​​‌‌​​‌‌​​‌‌​​‌​​​​‌‌​​​​​‌‌​​‌‌​​‌‌​​‌​‌​‌‌​​‌​‌‍

# Extract hidden message
hidden_message = ''.join([extra for _, _, extra in typos])
print(f"Hidden message: {hidden_message}")
# Output: yeeahcongratstheflagisREDACTED
# Decoded: "yeeah congrats the flag is REDACTED"

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