Writeup Aria
01_General02_XOR

XOR Starter

Desc

XOR adalah operator bitwise yang menghasilkan 0 jika dua bit bernilai sama, dan 1 jika dua bit berbeda. Dalam matematika, XOR sering ditulis sebagai A XOR B; di banyak bahasa pemrograman, operatornya ditulis dengan tanda ^.

ABOutput
000
011
101
110

Untuk bilangan biner yang lebih panjang, XOR dilakukan bit demi bit. Contohnya 0110 ^ 1010 = 1100. Pada string, setiap karakter diubah dulu menjadi angka ordinal, lalu angka tersebut di-XOR dengan key.

Pada challenge ini, string label harus di-XOR dengan integer 13. Hasilnya dikonversi kembali menjadi string, lalu dimasukkan ke format crypto{new_string}.

Library Python pwntools punya fungsi xor() yang memudahkan operasi XOR pada bytes. Namun, konsep dasarnya tetap bisa dibuat manual dengan ord(), chr(), dan operator ^.

Solution

With Python
from pwn import xor

print(xor(b"label", 13))
# aloha

b"label" adalah bytes dari string label. Fungsi xor() dari pwntools melakukan XOR setiap byte dengan nilai 13, lalu mengembalikan hasilnya sebagai bytes. Hasil bytes tersebut terbaca sebagai aloha.

Versi tanpa pwntools:

text = "label"
result = "".join(chr(ord(c) ^ 13) for c in text)
print(result)

Pada versi manual, ord(c) mengubah karakter menjadi integer, ^ 13 melakukan XOR, dan chr() mengubah hasilnya kembali menjadi karakter.

Summary

Challenge ini memperkenalkan XOR pada string. Konsep utamanya adalah karakter harus diubah menjadi angka dulu sebelum operasi bitwise bisa dilakukan.

Flag

crypto{aloha}

On this page