← 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}