Crazy Once — Leetspeak Copypasta

Decoded a steganographic message hidden inside a progressively mangled leetspeak copypasta by extracting anomalous suffix tokens.

ForensicsSteganographyLeetspeakDawgCTFEasy

We are presented with a progressively encoded leetspeak copypasta challenge in DawgCTF.


Challenge Description

i rage-wrote this challenge at 2am while running into problem after problem struggling to fix the world's jankiest server rack [...] if I have to suffer like this so do you

The challenge body is a single enormous block of text: a deepening spiral of the classic "I was crazy once" copypasta, progressively encoded into increasingly cursed leetspeak. The hint notes:

Hint: If you don't want to write the regex expression of eternal pain and suffering, try substituting each leet-letter back to its alphabetical equivalent first.

The full challenge text:

crazy? i was crazy once! they locked me in a room, a round room, a round rubber room, a round rubber room with rats, round rats, round rubber rats, round rubber rats with wheels, round wheels, round rubber wheels, round rubber wheels that go round and round and round, it drove me }pl cr4zy! cr4zy? i w4s cr4zy once! they locked me in 4 room, 4 round room, 4 round rubber room, 4 round rubber room with r4ts, round r4ts, round rubber r4ts, round rubber r4ts with wheels, round wheels, round rubber wheels, round rubber wheels th4t go round 4nd round 4nd round, it drove me eh_ cr4zy! cr4zy? i w4s cr4zy onc3! th3y lock3d m3 in 4 room, 4 round room, 4 round rubb3r room, 4 round rubb3r room with r4ts, round r4ts, round rubb3r r4ts, round rubb3r r4ts with wh33ls, round wh33ls, round rubb3r wh33ls, round rubb3r wh33ls th4t go round 4nd round 4nd round, it drov3 m3 dne cr4zy! cr4zy? 1 w4s cr4zy onc3! th3y lock3d m3 1n 4 room, 4 round room, 4 round rubb3r room, 4 round rubber room w1th r4ts, round r4ts, round rubb3r r4ts, round rubb3r r4ts w1th wh33ls, round wh33ls, round rubb3r wh33ls, round rubb3r wh33ls th4t go round 4nd round 4nd round, 1t drov3 m3 s_e cr4zy! cr4zy? 1 w4s cr4zy 0nc3! th3y l0ck3d m3 1n 4 r00m, 4 r0und r00m, 4 r0und rubb3r r00m, 4 r0und rubb3r r00m w1th r4ts, r0und r4ts, r0und rubb3r r4ts, r0und rubb3r r4ts w1th wh33ls, r0und wh33ls, r0und rubb3r wh33ls, r0und rubb3r wh33ls th4t g0 r0und 4nd r0und 4nd r0und, 1t dr0v3 m3 sae cr4zy! cr4zy? 1 w45 cr4zy 0nc3! th3y l0ck3d m3 1n 4 r00m, 4 r0und r00m, 4 r0und rubb3r r00m, 4 r0und rubb3r r00m w1th r4t5, r0und r4t5, r0und rubb3r r4t5, r0und rubb3r r4t5 w1th wh33l5, r0und wh33l5, r0und rubb3r wh33l5, r0und rubb3r wh33l5 th4t g0 r0und 4nd r0und 4nd r0und, 1t dr0v3 m3 lp_ cr4zy! cr4zy? 1 w45 cr4zy 0nc3! 7h3y l0ck3d m3 1n 4 r00m, 4 r0und r00m, 4 r0und rubb3r r00m, 4 r0und rubb3r r00m w17h r475, r0und r475, r0und rubb3r r475, r0und rubb3r r475 w17h wh33l5, r0und wh33l5, r0und rubb3r wh33l5, r0und rubb3r wh33l5 7h47 g0 r0und 4nd r0und 4nd r0und, 17 dr0v3 m3 efi cr4zy! cr4zy? 1 w45 cr4zy 0nc3! 7h3y l0ck3d m3 1n 4 r00m, 4 r0und r00m, 4 r0und rubb3r r00m, 4 r0und rubb3r r00m w17h r475, r0und r475, r0und rubb3r r475, r0und rubb3r r475 w17h wh33l5, r0und wh33l5, r0und rubb3r wh33l5, r0und rubb3r wh33l5 7h47 60 r0und 4nd r0und 4nd r0und, 17 dr0v3 m3 l_y (r4zy! (r4zy? 1 w45 (r4zy 0n(3! 7h3y l0(k3d m3 1n 4 r00m, 4 r0und r00m, 4 r0und rubb3r r00m, 4 r0und rubb3r r00m w17h r475, r0und r475, r0und rubb3r r475, r0und rubb3r r475 w17h wh33l5, r0und wh33l5, r0und rubb3r wh33l5, r0und rubb3r wh33l5 7h47 60 r0und 4nd r0und 4nd r0und, 17 dr0v3 m3 m_f (r42y! (r42y? 1 w45 (r42y 0n(3! 7h3y l0(k3d m3 1n 4 r00m, 4 r0und r00m, 4 r0und rubb3r r00m, 4 r0und rubb3r r00m w17h r475, r0und r475, r0und rubb3r r475, r0und rubb3r r475 w17h wh33l5, r0und wh33l5, r0und rubb3r wh33l5, r0und rubb3r wh33l5 7h47 60 r0und 4nd r0und 4nd r0und, 17 dr0v3 m3 o_l (r42y! (r42y? 1 w45 (r42y 0n(3! 7h3y l0(k3d m3 1n 4 r00m, 4 r0(_)nd r00m, 4 r0(_)nd r(_)883r r00m, 4 r0(_)nd r(_)883r r00m w17h r475, r0(_)nd r475, r0(_)nd r(_)883r r475, r0(_)nd r(_)883r r475 w17h wh33l5, r0(_)nd wh33l5, r0(_)nd r(_)883r wh33l5, r0(_)nd r(_)883r wh33l5 7h47 60 r0(_)nd 4nd r0(_)nd 4nd r0(_)nd, 17 dr0v3 m3 ort (r42y! (r42y? 1 w45 (r42y 0n(3! 7h3y l0(k3|) m3 1n 4 r00m, 4 r0(_)n|) r00m, 4 r0(_)n|) r(_)883r r00m, 4 r0(_)n|) r(_)883r r00m w17h r475, r0(_)n|) r475, r0(_)n|) r(_)883r r475, r0(_)n|) r(_)883r r475 w17h wh33l5, r0(_)n|) wh33l5, r0(_)n|) r(_)883r wh33l5, r0(_)n|) r(_)883r wh33l5 7h47 60 r0(_)n|) 4n|) r0(_)n|) 4n|) r0(_)n|), 17 |)r0v3 m3 noc (|242y! (|242y? 1 w45 (|242y 0n(3! 7h3y l0(k3|) m3 1n 4 |200m, 4 |20(_)n|) |200m, 4 |20(_)n|) |2(_)883|2 |200m, 4 |20(_)n|) |2(_)883|2 |200m w17h |2475, |20(_)n|) |2475, |20(_)n|) |2(_)883|2 |2475, |20(_)n|) |2(_)883|2 |2475 w17h wh33l5, |20(_)n|) wh33l5, |20(_)n|) |2(_)883|2 wh33l5, |20(_)n|) |2(_)883|2 wh33l5 7h47 60 |20(_)n|) 4n|) |20(_)n|) 4n|) |20(_)n|), 17 |)|20v3 m3 _ll (|242y! (|242y? 1 w45 (|242y 0n(3! 7h3y l0(k3|) /\/\3 1n 4 |200/\/\, 4 |20(_)n|) |200/\/\, 4 |20(_)n|) |2(_)883|2 |200/\/\, 4 |20(_)n|) |2(_)883|2 |200/\/\ w17h |2475, |20(_)n|) |2475, |20(_)n|) |2(_)883|2 |2475, |20(_)n|) |2(_)883|2 |2475 w17h wh33l5, |20(_)n|) wh33l5, |20(_)n|) |2(_)883|2 wh33l5, |20(_)n|) |2(_)883|2 wh33l5 7h47 60 |20(_)n|) 4n|) |20(_)n|) 4n|) |20(_)n|), 17 |)|20v3 /\/\3 a_t (|242y! (|242y? 1 w45 (|242y 0/\/(3! 7h3y l0(k3|) /\/\3 1/\/ 4 |200/\/\, 4 |20(_)/\/|) |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\ w17h |2475, |20(_)/\/|) |2475, |20(_)/\/|) |2(_)883|2 |2475, |20(_)/\/|) |2(_)883|2 |2475 w17h wh33l5, |20(_)/\/|) wh33l5, |20(_)/\/|) |2(_)883|2 wh33l5, |20(_)/\/|) |2(_)883|2 |2475 w17h wh33l5 7h47 60 |20(_)/\/|) 4/\/|) |20(_)/\/|) 4/\/|) |20(_)/\/|), 17 |)|20v3 /\/\3 sol (|242y! (|242y? 1 \/\/45 (|242y 0/\/(3! 7h3y l0(k3|) /\/\3 1/\/ 4 |200/\/\, 4 |20(_)/\/|) |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\ \/\/17h |2475, |20(_)/\/|) |2475, |20(_)/\/|) |2(_)883|2 |2475, |20(_)/\/|) |2(_)883|2 |2475 \/\/17h \/\/h33l5, |20(_)/\/|) \/\/h33l5, |20(_)/\/|) |2(_)883|2 \/\/h33l5, |20(_)/\/|) |2(_)883|2 \/\/h33l5 7h47 60 |20(_)/\/|) 4/\/|) |20(_)/\/|) 4/\/|) |20(_)/\/|), 17 |)|20v3 /\/\3 _ev (|242y! (|242y? 1 \/\/45 (|242y 0/\/(3! 7|-|3y l0(k3|) /\/\3 1/\/ 4 |200/\/\, 4 |20(_)/\/|) |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\ \/\/17|-| |2475, |20(_)/\/|) |2475, |20(_)/\/|) |2(_)883|2 |2475, |20(_)/\/|) |2(_)883|2 |2475 \/\/17|-| \/\/|-|33l5, |20(_)/\/|) \/\/|-|33l5, |20(_)/\/|) |2(_)883|2 \/\/|-|33l5, |20(_)/\/|) |2(_)883|2 \/\/|-|33l5 7|-|47 60 |20(_)/\/|) 4/\/|) |20(_)/\/|) 4/\/|) |20(_)/\/|), 17 |)|20v3 /\/\3 ah_ (|242\|! (|242\|? 1 \/\/45 (|242\| 0/\/(3! 7|-|3\| l0(k3|) /\/\3 1/\/ 4 |200/\/\, 4 |20(_)/\/|) |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\ \/\/17|-| |2475, |20(_)/\/|) |2475, |20(_)/\/|) |2(_)883|2 |2475, |20(_)/\/|) |2(_)883|2 |2475 \/\/17|-| \/\/|-|33l5, |20(_)/\/|) \/\/|-|33l5, |20(_)/\/|) |2(_)883|2 \/\/|-|33l5, |20(_)/\/|) |2(_)883|2 \/\/|-|33l5 7|-|47 60 |20(_)/\/|) 4/\/|) |20(_)/\/|) 4/\/|) |20(_)/\/|), 17 |)|20v3 /\/\3 i{F (|242\|! (|242\|? 1 \/\/45 (|242\| 0/\/(3! 7|-|3\| l0(k3|) /\/\3 1/\/ 4 |200/\/\, 4 |20(_)/\/|) |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\ \/\/17|-| |2475, |20(_)/\/|) |2475, |20(_)/\/|) |2(_)883|2 |2475, |20(_)/\/|) |2(_)883|2 |2475 \/\/17|-| \/\/|-|33|_5, |20(_)/\/|) \/\/|-|33|_5, |20(_)/\/|) |2(_)883|2 \/\/|-|33|_5, |20(_)/\/|) |2(_)883|2 \/\/|-|33|_5 7|-|47 60 |20(_)/\/|) 4/\/|) |20(_)/\/|) 4/\/|) |20(_)/\/|), 17 |)|20v3 /\/\3 i{F (|242\|! (|242\|? 1 \/\/45 (|242\| 0/\/(3! 7|-|3\| |_0(|<3|) /\/\3 1/\/ 4 |200/\/\, 4 |20(_)/\/|) |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\, 4 |20(_)/\/|) |2(_)883|2 |200/\/\ \/\/17|-| |2475, |20(_)/\/|) |2475, |20(_)/\/|) |2(_)883|2 |2475, |20(_)/\/|) |2(_)883|2 |2475 \/\/17|-| \/\/|-|33|_5, |20(_)/\/|) \/\/|-|33|_5, |20(_)/\/|) |2(_)883|2 \/\/|-|33|_5, |20(_)/\/|) |2(_)883|2 \/\/|-|33|_5 7|-|47 60 |20(_)/\/|) 4/\/|) |20(_)/\/|) 4/\/|) |20(_)/\/|), 17 |)|20v3 /\/\3 waD

Observation

Reading the text carefully, the copypasta repeats 20 times. Each iteration is visually similar to the last but with more aggressive substitution — going from mild 4/a swaps all the way to multi-character leet blocks like |2 for r, (_) for u, /\/\ for m, and |< for k.

Crucially, each iteration ends with what looks like noise — a small 2–3 character token that doesn't fit the pattern of the repeated phrase:

}pl  eh_  dne  s_e  sae  lp_  efi  l_y  m_f  o_l
ort  noc  _ll  a_t  sol  _ev  ah_  i{F  gCT  waD

These tokens are clearly not part of the copypasta and aren't being leetspeak-encoded — they're steganographically embedded as the terminator of each iteration.


Solve

We can solve this challenge through a systematic approach:

  1. Extract the Suffix Tokens: Read through the block and pull the anomalous suffix from the end of each iteration, in order.
  2. Concatenate the Tokens: Join all extracted tokens together sequentially.
  3. Reverse the Sequence: The concatenated string reads as the flag backwards. Reverse the string to get the final flag.

The extraction mapping:

Iteration
Token
1
}pl
2
eh_
3
dne
4
s_e
5
sae
6
lp_
7
efi
8
l_y
9
m_f
10
o_l
11
ort
12
noc
13
_ll
14
a_t
15
sol
16
_ev
17
ah_
18
i{F
19
gCT
20
waD

Concatenation

}pleh_dnes_esaelp_efil_ym_fo_lortnoc_lla_tsol_evah_i{FgCTwaD

Reversal

DawgCTF{i_have_lost_all_control_of_my_life_please_send_help}

Flag

Decoded Flag
DawgCTF{i_have_lost_all_control_of_my_life_please_send_help}

Summary

Key Takeaway: The ever-deepening leetspeak encoding is a smokescreen — the flag isn't hidden inside the leetspeak transformation itself, but in the small out-of-place tokens appended to each iteration of the copypasta. By progressively mangling the repeating text, it makes each iteration look increasingly chaotic, camouflaging the embedded tokens.
DNS-Based Steganography
Corridor