Marsah

Deskripsi

Kamu suka matrix? sama, aku juga suka Marsha

Format Flag: TechnoFairCTF{}

Author : AnYujin

Diberikan source code beserta outputnya.

from sage.all import *
from Crypto.Util.number import *
import random

flag="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
flag=[ord(i) for i in flag]
flag=[flag[i:i+6] for i in range(0,len(flag),6)]

def gen_key():
	a=[random.getrandbits(16) for _ in range(6)]
	key=[[0]*_+[a[_]]+[0]*(5-_) for _ in range(6)]
	key=Matrix(key)
	return key

flag=Matrix(flag)
key = gen_key()
key=Matrix(key)

enc=flag*key
ev=key.eigenvectors_right()
enc=list(enc)

print(f"key_hint :{ev}")
print(f"enc : {enc}")

Pertama-tama, saya mengutak-atik terlebih dahulu program yang ada untuk memahami cara kerja kodenya. Saya menemukan bahwa ternyata key itu adalah matriks diagonal, jadi perkalian flag*key itu mirip dengan perkalian skalar tapi berbeda-beda untuk setiap kolom.

Kira-kira seperti ini contohnya untuk flag yang karakternya sama semua.

Selain itu, rupanya key_hint menunjukkan pada kita, โ€œuntuk kolom tertentu pada matrix diagonal, value-nya apa?โ€. Dengan pengetahuan ini, berikut adalah solver lengkapnya.

Flag: TechnoFairCTF{g4dis_k0leris_y4n9_5uK4_berim4jIn4s1}

Last updated