🧩 Challenge Description
You are given a file named disko-1.dd.gz.
The goal is to analyze it and find the hidden flag.
Let’s go step-by-step through how to extract the flag from this compressed disk image.
🗜️ Step 1: Unzipping the .gz file
After downloading the file, you’ll see something like this:
$ ls disko-1.dd.gz disko-1.dd.gz:Zone.Identifier
This means you’ve downloaded a gzip-compressed disk image.
To extract it, we use the gunzip command:
$ gunzip disko-1.dd.gz
Now, list the files again:
$ ls disko-1.dd disko-1.dd.gz:Zone.Identifier
✅ Explanation:gunzip decompresses .gz files.
After running it, the .dd file is the raw disk image we’ll analyze next.
🔍 Step 2: Checking the file type with file
Let’s identify what kind of file this .dd really is:
$ file disko-1.dd disko-1.dd: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", Media descriptor 0xf8, sectors/track 32, heads 8, sectors 102400 (volumes > 32 MB), FAT (32 bit), sectors/FAT 788, serial number 0x241a4420, unlabeled
✅ Explanation:
The file command inspects the binary signature of a file and tells you what it contains.
Here, it says the image contains a FAT32 filesystem — commonly used on USB drives or small disks.
That means we can search inside it for readable text.
🔡 Step 3: Searching for readable text with strings
Now we want to see if there are any human-readable strings inside this binary disk image.
$ strings disko-1.dd
✅ Explanation:strings scans a binary file and prints all sequences of printable characters (letters, digits, punctuation).
It’s a common tool in forensics and reverse engineering to spot hidden messages or flags.
However, running it alone prints too much data.
Let’s filter only lines containing “pico” — since all picoCTF flags start with that word.
🔎 Step 4: Filtering results with grep
$ strings disko-1.dd | grep "pico"
:/icons/appicon
# $Id: piconv,v 2.8 2016/08/04 03:15:58 dankogai Exp $
piconv -- iconv(1), reinvented in perl
piconv [-f from_encoding] [-t to_encoding]
piconv -l
piconv -r encoding_alias
piconv -h
B<piconv> is perl version of B<iconv>, a character encoding converter
a technology demonstrator for Perl 5.8.0, but you can use piconv in the
piconv converts the character encoding of either STDIN or files
Therefore, when both -f and -t are omitted, B<piconv> just acts
picoCTF{1t5_ju5t_4_5tr1n9_be6031da}
✅ Explanation:grep searches text output for a specific pattern.
Here, it quickly finds the line containing our flag.
🏁 Step 5: Capture the Flag!
The flag is:
picoCTF{1t5_ju5t_4_5tr1n9_be6031da}
🎉 Challenge solved!
🧠 Summary
| Step | Command | Purpose | Result |
|---|---|---|---|
| 1 | gunzip | Decompress .gz file | Extracted .dd disk image |
| 2 | file | Identify file type | Found FAT32 disk |
| 3 | strings | Find readable text in binary | Detected text patterns |
| 4 | grep | Filter results | Found the flag line |
💡 Beginner Tips
If you see something that looks like random text but starts with picoCTF{, you’ve found your flag!
.dd files are raw disk images — they contain the full filesystem data.
gunzip is for decompressing .gz archives.
strings and grep are your best friends when searching for flags in binary files.
