KubSTU CTF 2026 Spring — Silence in Verona Writeup
Magic header'ı olmayan, gövdesi şifreli bir Cisco Packet Tracer .pkt dosyası gizli bir Shakespeare Programming Language programı barındırıyor; konteyneri çöz, Borring novel.txt'yi bul, çalıştır ve master key'i kurtar.
KubSTU CTF 2026 Spring — Silence in Verona
Bir master recovery key'i Packet Tracer topolojisi boyunca saklayan bir network-forensics challenge'ı. Üç parça, "3 in 1" — port mantığı, workstation logları ve topolojinin görsel artefaktları — ve tek bir dosya: 3 in 1 .pkt.
- Etkinlik: KubSTU CTF 2026 Spring
- Kategori: Network
- Artefakt:
3 in 1 .pkt(1.48 MB) - Flag formatı:
KubSTU{...}
1. Dosya bir paket yakalaması değil
.pkt "packet" gibi görünüyor, bu yüzden ilk refleks tcpdump -r:
tcpdump -r "3 in 1 .pkt" -c 1tcpdump: unknown file formatHiçbir offset'te pcap/pcapng magic'i, zip/gzip/xz/zstd imzası yok ve file sadece data diyor. Ölçelim:
import math
from collections import Counter
d = open("3 in 1 .pkt","rb").read()
c = Counter(d); n = len(d)
H = -sum(v/n*math.log2(v/n) for v in c.values())
print("bytes:", n, "distinct:", len(c), "entropy:", round(H,3))bytes: 1482220 distinct: 256 entropy: 7.999256 byte değerinin tamamı, entropi 7.999, otokorelasyon sıfır — gövde şifreli veya obfuske edilmiş ve hiçbir konteyner imzası yok.
Bu tam olarak modern bir Cisco Packet Tracer dosyasının parmak izi. PT 5.3.3'ten beri .pkt/.pka konteynerinin magic header'ı yoktur ve şifreli saklanır: iç XML topolojisi Qt qCompress ile sıkıştırılır, iki özel obfuscation katmanına sarılır ve ardından hard-coded key ve IV (0x89 * 16 ve 0x10 * 16) ile EAX modunda Twofish‑128 ile şifrelenir. Challenge anlatısı — "topolojinin görsel artefaktları", "port mantığı" — dosyanın bir Packet Tracer labı olduğunu doğruluyor.
2. Konteyneri offline çözme
Pipeline Packet Tracer olmadan tamamen geri çevrilebilir. securedypkt bunu saf Python ile uygular:
python3 -m venv ptvenv
./ptvenv/bin/pip install securedypkt
./ptvenv/bin/python -c \
"import securedypkt; open('cap.xml','wb').write(securedypkt.decrypt_file('3 in 1 .pkt'))"EAX authentication tag doğrulanır (kurcalama yok) ve Packet Tracer'ın dahili olarak sakladığı düz XML'i elde ederiz:
<PACKETTRACER5>
<VERSION>8.2.1.0118</VERSION>
...3.4 MB'lık bir topoloji dokümanı: cihazlar, IOS konfigürasyonları ve — en önemlisi — her PC'nin emüle edilmiş dosya sistemleri.
3. İş istasyonlarını denetlemek
Anlatı, anahtarın üç parçaya bölündüğünü söylüyor. Gömülü dosya sistemlerini okumak parçaları tek tek çıkarıyor:
-
Port mantığı —
network_security_audit_2026.txt:Text[2026-03-10 09:15] Applying Port Security policy on Access_Switch_1. [2026-03-10 09:30] Detected unauthorized MAC on Fa0/2. Port shutdown triggered. [2026-03-10 10:45] SSH session established from 172.16.10.10 to CORE_ROOT. [2026-03-10 11:20] VLAN 666 isolation test - SUCCESS. -
Sistem logları / notlar —
hardware_repair_log_room2.txt,DnD_notes.txt,Note.txt,vpn_connection_reset_notes.txt. Çoğu dekor; birvpn://config bloğu ve DnD notlarında bir "Hunter's Adventure" soundtrack göndermesi eşliğinde. -
Görsel artefaktlar — base64 bir PNG (
capybaras_tears.png) veThe GOAT(CapybaraMayCry).txtiçinde Unicode braille ASCII‑art bir resim.
Bunların hiçbiri payload değil. İzlenecek yolun ilk adımı basitçe tüm text dosyalarını aramak; bir iş istasyonunun c: sürücüsünde Borring novel .txt gömülü.
4. Payload — "sıkıcı bir roman"
Borring novel .txt düz yazı değil. SPL — Shakespeare Programming Language ile yazılmış bir program:
The Romeo's adventure.
Romeo, a man.
Juliet, a woman.
Act I: The Output.
Scene I: Display.
[Enter Romeo and Juliet]
Romeo:
You are as sweet as the sum of a sweet sweet sweet sweet sweet sweet flower and the sum of a sweet sweet flower and the sum of a sweet flower and a flower.
Speak your mind!
...
[Exeunt]SPL programları kötü Shakespeare gibi okunur: Romeo ve Juliet tamsayı değişkenlerdir, "sweet"/"flower" gibi isimler sayısal sabitleri kodlar, sum of X and Y toplama yapar ve Speak your mind! mevcut değeri bir karakter olarak çıkarır. 11 KB'lık dosyanın tamamı uzun bir aritmetik + Speak your mind! dizisi — yani karakter karakter bir string yazdırma.
5. Çalıştırmak
Herhangi bir SPL interpreter çalışır. shakespearelang paketiyle:
./ptvenv/bin/pip install shakespearelang
./ptvenv/bin/python -c \
"from shakespearelang import Shakespeare; Shakespeare(open('borring.spl').read()).run()"Good job bookworm, here's your reward
Mellin_The_HunterKurtarılan master key: Mellin_The_Hunter.
6. Flag
KubSTU{Mellin_The_Hunter}"Üç parça" hikâyede yanıltmacadır: denetim gerçektir (port security, loglar, görseller), ama master key bir iş istasyonunda text dosyası olarak gizlenmiş tek bir SPL programıdır. Packet Tracer konteynerini çöz, "sıkıcı romanı" bul, Shakespeare'i çalıştır ve anahtar çıkar.
Ne düşünüyorsun?
Tepki bırakarak geri bildirim ver