Please wait
Loading the requested page
Loading
Reading the latest public record.
Please wait
Loading the requested page
Reading the latest public record.
V1t CTF 2025 / 2025
An unmarked data file was recovered from an abandoned research server labeled only as Specimen 512 . No accompanying documentation, no metadata, and no obvious contents — just a massive file filled with strange sequences. Some say it hides
We received a single archive: Specimen_512.zip.
Inside was only one file, Specimen_512.fasta, a 5 MB text full of A/C/G/T sequences and a few comment lines such as:
; hint: encoding=base64->triplet-codon (lexicographic AAA..TTT => b64 idx 0..63)
; pad_count=2 ; note: base64 padding removed from stream
Opening the FASTA revealed it wasn’t biological data but an encoded stream.
The comments clearly hinted that each DNA triplet (AAA, AAC, … TTT) represents one Base64 index from 0 to 63.
So decoding meant mapping 64 possible codons -> the standard Base64 alphabet.
I wrote a short Python script to:
==) per the hint and Base64-decode the result.That produced a ~1.3 MB binary blob.
Hex inspection showed high entropy, but at offset 534288 the magic bytes PK 03 04 appeared, a ZIP signature.
I carved the embedded ZIP starting at that offset and opened it:
from itertools import product
import base64, zipfile
# build codon->b64 map
alphabet = ['A','C','G','T']
codons = [''.join(p) for p in product(alphabet, repeat=3)]
b64alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
codon_map = dict(zip(codons, b64alp))
# read sequence
seq = ''.join(l.strip() for l in open("Specimen_512.fasta") if not l.startswith((">", ";")))
b64 = ''.join(codon_map[seq[i:i+3]] for i in range(0,len(seq)-2,3))
decoded = base64.b64decode(b64 + "==")
# extract embedded zip
start = decoded.find(b"PK\x03\x04")
end = decoded.find(b"PK\x05\x06", start)
open("inner.zip","wb").write(decoded[start:end+22])
with zipfile.ZipFile("inner.zip") as z:
z.extractall(".")
Inside inner.zip were:
flag.txt
readme.txt
flag.txt contained the solution.
v1t{30877432d1026706d7e805da846a32c3}