Alternatif Anahtar Disasm
Bir fonksiyonun dis çıktısı ele geçti. Fonksiyon, sabit bir byte dizisini çözüyor:
````
2 LOAD_CONST veri = bytes.fromhex('527b47764a4c60567d567f68775e6056605a4c567f4376457d56675e75686b58614a')
4 LOAD_CONST anahtarlar = (0x13, 0x37)
6 SETUP_LOOP i, b -> enumerate(veri)
8 BINARY_XOR acc = b ^ anahtarlar[i % 2] # cift indeks 0x13, tek indeks 0x37
10 CALL chr(acc)
12 RETURN ''.join(...)
Disassembly’yi kafanda yürüt: byte’lar konum paritesine göre iki farklı anahtarla XOR’lanmış. Aynısını uygulayınca flag çıkar.
Bu challenge ne öğretiyor?
- Disassembly, makine kodunu okunabilir komutlara çevirir.
- XOR, aynı anahtarla iki kez uygulandığında veriyi geri veren bit düzeyinde bir işlemdir.
- Hex (onaltılık), her baytı 0-9 ve a-f ile iki karakterde gösterir.
- Tersine mühendislik challenge'ları bir programın mantığını okuyup tersine çevirmeyi öğretir.