Writeup Aria
01_General02_XOR

Favourite Byte

Desc

Pada beberapa challenge berikutnya, kita memakai konsep XOR untuk memecahkan data yang disembunyikan. Kali ini ciphertext dienkripsi dengan XOR memakai satu byte rahasia.

Karena key hanya berukuran satu byte, kemungkinan nilainya hanya 0x00 sampai 0xff. Artinya kita bisa brute force semua kemungkinan key, lalu mencari hasil decode yang terlihat seperti flag CryptoHack.

Ciphertext diberikan dalam bentuk hex, jadi langkah pertama adalah decode hex menjadi bytes.

73626960647f6b206821204f21254f7d694f7624662065622127234f726927756d

Solution

Di sini kita bisa memakai tool seperti dcode.fr/chiffre-xor, lalu pilih opsi:

  • Knowing the size (in bytes) of the key: 1

Hasil brute force menunjukkan kandidat yang jelas:

10    crypto{0x10_15_my_f4v0ur173_by7e}

1787944468846

Nilai 10 di output tersebut adalah key dalam hex, yaitu 0x10.

Solusi yang sama bisa dilakukan dengan CyberChef:

Versi Python:

ciphertext = bytes.fromhex("73626960647f6b206821204f21254f7d694f7624662065622127234f726927756d")

for key in range(256):
    plaintext = bytes(c ^ key for c in ciphertext)
    if plaintext.startswith(b"crypto{"):
        print(hex(key), plaintext.decode())

bytes.fromhex() mengubah ciphertext hex menjadi bytes. Loop range(256) mencoba semua kemungkinan byte key. Ekspresi c ^ key melakukan XOR setiap byte ciphertext dengan key kandidat. Karena flag CryptoHack selalu diawali crypto{, kita bisa memakai startswith() untuk menemukan plaintext yang benar.

Summary

Challenge ini memperkenalkan single-byte XOR brute force. Karena key hanya satu byte, ruang pencarian sangat kecil dan bisa dicoba semua. Petunjuk terkuatnya adalah format flag crypto{...}.

Flag

crypto{0x10_15_my_f4v0ur173_by7e}

On this page