~/tiramisaks
← back to /home

KAPOLRI CUP 2026: Leaked Hex Analysis

KAPOLRI CUP 2026 2026-08-01 Cryptography / Forensics
#KAPOLRI CUP 2026 #Crypto #Hex Decoding #Forensics

leaked.hex — Single-Byte XOR Cipher

Kategori: Cryptography (Crypto) File: leaked.hex Flag: polriCTF26{x0r_1s_ju5t_4_l0ck_w1th0ut_4_k3y}


Ringkasan

File berisi blob hex berukuran 44 byte yang merupakan hasil enkripsi XOR satu-byte (key 0x2A). Karena plaintext diketahui dimulai dengan prefix polriCTF26{, key bisa ditentukan hanya dari byte pertama, lalu seluruh blob didekripsi.


Langkah-Langkah

1. Lihat Isi File

cat leaked.hex

Berupa string hex (contoh):

425a0b1e3a1a...   (44 byte hex = 44 byte biner)

2. Temukan Key

Plaintext dijamin berawalan polriCTF26{. XOR byte cipher pertama dengan p:

ct = bytes.fromhex(open("leaked.hex").read())
key = ct[0] ^ ord("p")   # => 0x2A
print(hex(key))          # 0x2a

Ternyata key 0x2A — dan 0x2A juga terlihat di awal byte hex blob.

3. Dekripsi

key = 0x2A
flag = bytes(b ^ key for b in ct)
print(flag.decode())
# polriCTF26{x0r_1s_ju5t_4_l0ck_w1th0ut_4_k3y}

4. Verifikasi Round-Trip

Enkripsi ulang hasil dekripsi harus sama persis dengan leaked.hex:

assert bytes(b ^ key for b in flag) == ct   # OK

Round-trip terbukti konsisten.


Kesimpulan

  • Enkripsi adalah XOR satu-byte dengan key 0x2A.
  • Prefix flag yang diketahui (polriCTF26{) langsung membocorkan key-nya.
  • Flag tidak butuh brute-force; hanya 1 XOR pass.

Flag

polriCTF26{x0r_1s_ju5t_4_l0ck_w1th0ut_4_k3y}