Great Snakes
Desc
Kriptografi modern sering dikerjakan dengan bantuan kode, terutama untuk decoding, manipulasi byte, dan otomasi serangan. Karena itu, CryptoHack banyak memakai Python sebagai bahasa utama untuk menyelesaikan challenge.
Python 3 cocok dipakai karena sintaksnya ringkas, punya banyak library kriptografi, dan mudah dipakai untuk mengubah data dari satu bentuk ke bentuk lain. Pada challenge ini, kita diminta menjalankan script Python yang sudah disediakan.
Script tersebut berisi list angka, lalu setiap angka di-XOR dengan nilai 0x32. Hasil XOR diubah menjadi karakter memakai chr(), kemudian digabung menjadi flag.
Attachment
#!/usr/bin/env python3
import sys
# import this
if sys.version_info.major == 2:
print("You are running Python 2, which is no longer supported. Please update to Python 3.")
ords = [81, 64, 75, 66, 70, 93, 73, 72, 1, 92, 109, 2, 84, 109, 66, 75, 70, 90, 2, 92, 79]
print("Here is your flag:")
print("".join(chr(o ^ 0x32) for o in ords))Solution
Download script dari attachment, lalu jalankan dengan Python 3.
wget https://cryptohack.org/static/challenges/great_snakes_35381fca29d68d8f3f25c9fa0a9026fb.py -O great_snakes.py
python3 great_snakes.py
# Here is your flag:
# crypto{z3n_0f_pyth0n}Di dalam script, ords adalah list angka ordinal. Ekspresi o ^ 0x32 melakukan operasi XOR antara setiap angka dan kunci 0x32, sedangkan chr() mengubah angka hasil XOR menjadi karakter. Terakhir, "".join(...) menyatukan semua karakter menjadi satu string flag.
Summary
Challenge ini memperkenalkan workflow dasar CryptoHack: ambil script, baca transformasi datanya, lalu jalankan atau modifikasi Python untuk mendapatkan flag. Fungsi penting yang dipakai adalah chr() untuk mengubah integer menjadi karakter dan operator ^ untuk XOR.
Flag
crypto{z3n_0f_pyth0n}