I_Hate_Physics
Challenge
Imported from local notes.md.
Solution
Original Notes
I_Hate_Physics
Challenge Summary
- Given: a linked repository folder containing one text file,
STUDYME.txt, presented as physics study notes. - Goal: recover the hidden message and extract the flag in the format
DawgCTF{...}. - Constraints: solve from the provided notes file only.
Initial Recon / Triage
- Observations: the file is plain UTF-8 text and contains several obviously suspicious lines, including forced uppercase phrases, unmatched braces, and malformed equations.
- File identification:
starting_files/STUDYME.txtis a text-based stego challenge rather than an image/audio container. - Entry points: line starts and line ends looked intentionally crafted, so acrostic-style extraction was the first likely path.
Hypotheses & Approach
- Hypothesis 1: the message was encoded in special Unicode or invisible whitespace. This was ruled out after rendering escaped characters and checking for non-ASCII code points beyond normal symbols like
∆andα. - Hypothesis 2: the message was encoded with positional characters from each line. Interleaving the first and last character from each non-empty line produced readable output immediately.
Execution Steps (Reproducible)
Stage 1
Commands:
cp '/tmp/dawgctf-sp26/I Hate Physics!/STUDYME.txt' starting_files/
file starting_files/STUDYME.txt
sed -n 'l' starting_files/STUDYME.txt | head
Results:
- Confirmed the asset is UTF-8 text.
- Escaped output showed no hidden tab or zero-width scheme, but did show intentionally odd line structure.
Stage 2
Commands:
python3 artifacts/extract_message.py
Results:
- The script interleaves the first and last character of each non-empty line.
- Full recovered message:
DawgCTF{therm0dyn4mic5sucks!}Thisisn0tpartoftheflag!TnmnQ, )∆)W,o:QiadLpa)RS(ns)Rdt Umpp∆y∆sKTAeKTAsV)∆ ∆)WVClCea4I)fTf)UY∆TdTL)1)E0E5E8T6 - The flag is the leading flag-formatted substring before the decoy text
Thisisn0tpartoftheflag!.
Artifacts Produced
starting_files/STUDYME.txt: original challenge asset copied from the public repo.artifacts/extract_message.py: helper script used to reconstruct the hidden message.
Flag
DawgCTF{therm0dyn4mic5sucks!}