0x00
ChallengeKita diberikan soal dengan deskripsi seperti berikut:
Di mana pada soal tersebut terdapat clue yaitu Bi UNTUK BINERRRRR!!!
dan password is BiHB32R13
dan disertakan juga file soal.secret.
0x01
AnalyzeJika kita lihat, file soal.secret berisi kombinasi angka biner
Jika diperhatikan, dari clue di atas kita bisa dengan mudah menebak bahwa BiHB32R13
adalah kombinasi metode konversi dan enkripsi dengan penjabaran
Bi = Biner H = Hexa B32 = Base32 R13 = Rot13
Jadi, tugas kita adalah melakukan konversi dan dekripsi berdasarkan urutan dan metode enkripsi tersebut, lalu menemukan flag-Nya
0x02
PROgrammer is PROblem SolverMari kita buat program untuk melakukan tugas mencari flag-Nya. Kita akan menggunakan bahasa pemrograman Python untuk melakukan konversi dan dekripsi yang dibutuhkan.
Pertama, kita buat function untuk melakukan konversi dari Binary String
menjadi karakter ASCII
.
def Bi(bins):
bits=[]
for i in range(int(len(bins)/8)): i*=8 ; bits.append(bins[i:i+8]);
return ''.join([chr(int(bit, 2)) for bit in bits])
Lalu, tahap selanjutnya untuk proses konversi dari bilangan Hexadecimal
.
def H(hex):
hbit=[]
for i in range(int(len(hex)/2)): i*=2 ; hbit.append(hex[i:i+2]);
return ''.join([chr(int(bit, 16)) for bit in hbit])
Selanjutnya untuk proses decode Base32 Hash
. Untuk itu kita perlu import library base64
terlebih dahulu.
def B32(hash): return base64.b32decode(hash)
Dan terakhir adalah proses dekripsi Rot13 cipher
.
def R13(cipher):
plain = ''
for c in str(cipher):
if (ord(c) > 64 and ord(c) < 91): plain += chr((ord(c)-64+13)%26+64)
elif (ord(c) > 96 and ord(c) < 123): plain += chr((ord(c)-96+13)%26+96)
else : plain+=c
return plain
Silahkan analisis sendiri tiap baris kode functions di atas!
Selanjutnya tinggal kita panggil seluruh function di atas untuk mengubah isi file soal.secret tadi menjadi string flag.
x = open(sys.argv[1]).read() print(R13(B32(H(Bi(x)))))
Run It & Voilaa, you got the Flag ~
WRECKIT40{CRYPTO_tolongin_aku_dong!!,_kurangPemanasan_hehehe}