HSCTF 8 | Queen of the Hill

#hsctf8

Zn = Zmod(26)
key = [
    [16,25,8],
    [14,19,5],
    [15,17,3],
]
invkey = matrix(Zn, key)^-1

plaintext = b"rtca{vbuhp_kaiq_gfj_nx_rda_ujw}"
plaintext = [x - ord('a') for x in plaintext if ord('a') <= x <= ord('z')]
print(plaintext)

flag = b""
for i in range(0, len(plaintext), 3):
    c = vector(Zn, plaintext[i:i+3])
    m = invkey*c

    flag += bytes([int(x) + ord('a') for x in m])
print(flag)