KPF Container Format / KPF контейнер форматы

Track 3 — Learn & Apply · Reverse Engineering · 325 pts

RU — Спецификация формата Kyzylorda Package Format (KPF v1)

KPF — вымышленный бинарный контейнерный формат для упаковки одной «полезной нагрузки» (payload). Спецификация умышленно простая; цель — реализовать парсер строго по описанию.

Структура файла

СмещениеДлина (байт)ПолеСодержимое
04magicASCII: KPF1
41version0x01
51xor_keyОднобайтовый ключ XOR-кодирования payload
62paddingИгнорировать (обычно 0x00 0x00)
84payload_lenДлина payload в байтах, little-endian uint32
12payload_lenpayloadКаждый байт XOR-нут с xor_key

Алгоритм извлечения

  1. Прочитать 4 байта — проверить magic KPF1 (4B 50 46 31).
  2. Прочитать version, xor_key, пропустить padding.
  3. Прочитать payload_len (little-endian).
  4. Прочитать payload_len байт payload.
  5. XOR-нуть каждый байт payload с xor_key → получить открытый payload.

Ваш файл (.kpf, 32 байта в hex)

Скопируйте hex ниже и сохраните как бинарный файл (например, через xxd -r -p) — либо просто работайте напрямую с hex-строкой.

4B 50 46 31 01 42 00 00 14 00 00 00 09 12 04 1D 12 03 1B 0E 0D 03 06 1D 10 07 14 07 03 0E 07 06

Ответ

Извлечённый payload — ASCII-строка. Введите её в форму заглавными буквами, без пробелов, с подчёркиваниями там, где они есть.

Reference (Python)

data = bytes.fromhex("4b50463101420000140000000912041d12031b0e0d03061d10071407030e0706")
assert data[:4] == b"KPF1"
key = data[5]
payload_len = int.from_bytes(data[8:12], "little")
payload = bytes(b ^ key for b in data[12:12+payload_len])
print(payload.decode())

KK — Kyzylorda Package Format (KPF v1) сипаттамасы

KPF — бір «payload»-ты буып-түю үшін ойдан шығарылған бинарлық контейнер форматы. Спецификация әдейі қарапайым; мақсат — сипаттамаға қатаң сәйкес парсер жазу.

Файл құрылымы

ОрынҰзындық (байт)ӨрісМазмұн
04magicASCII: KPF1
41version0x01
51xor_keyPayload-ты XOR-кодтау үшін бір байт
62paddingЕлемеу (әдетте 0x00 0x00)
84payload_lenPayload ұзындығы байтпен, little-endian uint32
12payload_lenpayloadӘр байт xor_key-пен XOR жасалған

Алу алгоритмі

  1. 4 байт оқу — magic KPF1-ді тексеру (4B 50 46 31).
  2. version, xor_key оқу, padding-ты өткізіп жіберу.
  3. payload_len оқу (little-endian).
  4. payload_len байт payload-ты оқу.
  5. Payload-тың әр байтын xor_key-пен XOR жасау → ашық payload-ты алу.

Сіздің файлыңыз (.kpf, 32 байт hex)

4B 50 46 31 01 42 00 00 14 00 00 00 09 12 04 1D 12 03 1B 0E 0D 03 06 1D 10 07 14 07 03 0E 07 06

Жауап

Шығарылған payload — ASCII-жол. Оны формаға бас әріптермен, бос орынсыз, керек жерде асты сызықпен енгізіңіз.

Claim your flag / Получите флаг / Жалаушаны алыңыз

RU: Введите ответ ниже. Сервер вернёт ваш персональный флаг.
KK: Жауапты төменде енгізіңіз. Сервер сізге жеке жалаушаны қайтарады.

(автозаполнение из ?user=<id>)


Hints / Подсказки / Кеңестер

RU: Каждая подсказка снимает баллы.
KK: Әр кеңес ұпайды кемітеді.