Komşu XOR Zinciri
Bir doğrulayıcı parolayı doğrudan saklamıyor; bunun yerine KOMŞU karakterlerin XOR farklarını ve tek bir çapa noktasını kontrol ediyor:
``c`
// L = uzunluk
if(s[0] != 0x41) return 0; // capa
for(int i=0; i<L; i++)
if((s[i] ^ s[(i+1)%L]) != D[i]) return 0;
Fark dizisi D (uzunluk 24):
0x0d 0x18 0x15 0x18 0x22 0x10 0x04 0x02 0x1e 0x06 0x2a 0x27 0x17 0x1d 0x2d 0x25 0x13 0x07 0x0d 0x0a 0x1b 0x1b 0x14 0x3c`
Çapadan başlayıp zinciri ileri yay: s[i+1] = s[i] ^ D[i].
Bu challenge ne öğretiyor?
- XOR, aynı anahtarla iki kez uygulandığında veriyi geri veren bit düzeyinde bir işlemdir.
- Disassembly, makine kodunu okunabilir komutlara çevirir.
- Tersine mühendislik challenge'ları bir programın mantığını okuyup tersine çevirmeyi öğretir.