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 ^.
| A | B | Output |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
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
pwntoolspunya fungsixor()yang memudahkan operasi XOR pada bytes. Namun, konsep dasarnya tetap bisa dibuat manual denganord(),chr(), dan operator^.
Solution
With Python
from pwn import xor
print(xor(b"label", 13))
# alohab"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}