Salah satu pesan rahasia dari Ciphers telah ditemukan dalam sebuah sistem lama bersama dengan algoritma enkripsi yang digunakan. Namun, pesan tersebut tidak dapat didekripsi secara langsung.
Category: Crypto || Level: EASY
Dapatkah Anda membantu void untuk mendekripsi pesan ini?
Pesan Terenkripsi:
a_up4qr_kaiaf0_bujktaz_qm_su4ux_cpbq_ETZ_rhrudm
Algoritma Enkripsi:
from secret import FLAG
def enc(plaintext):
return "".join(
chr((ord(c) - (base := ord('A') if c.isupper() else ord('a')) + i) % 26 + base)
if c.isalpha() else c
for i, c in enumerate(plaintext)
)
with open("message.txt", "w") as f:
f.write(enc(FLAG))
Catatan: Format flag yang diharapkan adalah THM{}.
Dari kode enkripsi yang diberikan, dapat dimahami bahwa setiap karakter alfabet dalam teks diubah berdasarkan indeksnya dalam string. Perubahan ini terjadi dalam urutan 'bertambah', dengan setiap karakter digeser maju berdasarkan indeksnya.
Untuk mendekripsi pesan, saya harus membalikkan operasi ini dengan menggeser karakter ke belakang sesuai indeksnya.
Berikut adalah implementasi fungsi dekripsi:
def dec(ciphertext):
return "".join(
chr((ord(c) - (base := ord('A') if c.isupper() else ord('a')) - i) % 26 + base)
if c.isalpha() else c
for i, c in enumerate(ciphertext)
)
ciphertext = "a_up4qr_kaiaf0_bujktaz_qm_su4ux_cpbq_ETZ_rhrudm"
flag = dec(ciphertext)
print(f"THM{{{flag}}}")
Penjelasan:
Setiap karakter alfabet dalam ciphertext dikurangi dengan indeksnya untuk mengembalikan karakter asli. Karakter non-alfabet tidak mengalami perubahan. Setelah didekripsi, hasilnya dibungkus dalam format 'THM{}' sesuai instruksi.
Ouput Pesan yang didekripsi:
THM{a_sm4ll_crypt0_message_to_st4rt_with_THM_cracks}
Dalam tantangan ini, saya berhasil memahami bagaimana algoritma enkripsi bekerja dan membangun fungsi dekripsi yang sesuai. Dengan menggeser karakter kembali sesuai indeksnya, saya berhasil mendapatkan flag yang tersembunyi dalam pesan terenkripsi. Tantangan ini mengajarkan kita tentang dasar enkripsi berbasis pergeseran (shift cipher) dengan variasi berbasis indeks.