arrow_backUS Cyber Games 2026
Forensicsmedium

Cyber Squirrel's Secret

by Pavel Knespl (capyplivl)

The .zip is actually a Krita document (.kra). The flag is split one character per hidden vector layer, so it never shows in the rendered preview. Sort the glyphs by x position to read it.

Solve

  1. Confirm the true type and unzip:
file finalsvibgr.zip
unzip finalsvibgr.zip -d extracted

file reports Zip data with MIME type application/x-krita. 2. Each hidden layer is a finalsvi/layers/*.shapelayer/content.svg holding one <text> glyph. Extract every glyph and order by SVG x coordinate:

import glob, re, html
items = []
for f in glob.glob("extracted/finalsvi/layers/*.shapelayer/content.svg"):
    data = open(f, encoding="utf-8", errors="replace").read()
    m = re.search(r"<text\b([^>]*)>(.*?)</text>", data, re.S)
    if not m:
        continue
    attrs, inner = m.group(1), m.group(2)
    c = html.unescape(re.sub(r"<[^>]+>", "", inner)).strip()
    if not c:
        continue
    tm = re.search(r"translate\(([-\d.]+),", attrs)
    mm = re.search(r"matrix\([-\d.eE]+\s+[-\d.eE]+\s+[-\d.eE]+\s+[-\d.eE]+\s+([-\d.eE]+)", attrs)
    x = float(tm.group(1)) if tm else (float(mm.group(1)) if mm else 0.0)
    items.append((x, c))
items.sort()
print("".join(c for _, c in items))
  1. Run it:
python3 solve.py extracted

Flag: SVIBGR{Kik!_s@y$_T3ch_w/_<3!}