Coconut CTF: Decode

From Indonesian Research And Development Center
Jump to: navigation, search

Berikut adalah pertanyaan dari misi ini:

ngzmHbibdkzdZgmsokufz

String diatas di-encode dengan fungsi/algoritma seperti gambar dibawah ini:

void *encode(char bungkus[256]){
    char *isi = "zxcvbnmlkjhgfdsapoiuytrewq";
    int i;

    for (i = 0; i < strlen(bungkus); i++) {
        if (bungkus[i] >= 'a' && bungkus[i] <= 'z') {
            bungkus[i] = isi[bungkus[i] - 'a'];
        } else if (bungkus[i] >= 'A' && bungkus[i] <= 'Z') {
            bungkus[i] = isi[bungkus[i] - 'A'] + ('A' - 'a');
        }
    }
}

Bisakah Anda melakukan decode kembali? jika bisa itulah flagnya.

Bisa terlihat bahwa soal pada misi ini merupakan character substitution dan yang perlu diperhatikan adalah misi ini bersifat case sensitive. Untuk menyelesaikannya, kita mencari posisi karakter yang berada pada variabel bungkus pada variabel isi, lalu posisi tersebut disesuaikan dengan urutan alphabet. Berikut adalah solusi untuk misi ini:

% python -c "k = 'zxcvbnmlkjhgfdsapoiuytrewq'; print ''.join([chr(k.index(c) + 0x61) if c.islower() else chr(k.index(c.lower()) + 0x41) for c in 'ngzmHbibdkzdZgmsokufz'])"
flagKesenianAlgoritma

Jadi flagnya adalah flagKesenianAlgoritma (case sensitive).