Dapat dilihat bahwa program menerima input kita lalu mengubahnya ke bentuk matrix 3x3 dan melakukan matrix multiplication. Matrix multiplication yang dilakukan adalah matrix-i dikali matrix-0. Karena kita tahu 9 bytes pertama dari flag yaitu INTECHFES jadi lakukan matrix multiplication inverse terhadap keseluruhan nilai CT untuk mendapatkan flag. Berikut solver yang kami gunakan.
base =list(b"INTECHFES")data ="16591 16716 18720 14700 14839 16596 15681 15810 17737 23089 23142 25955 18377 18305 20521 14746 14738 16272 19214 19535 21465 22507 22778 25463 19780 19694 22182 18507 18417 20641 18043 18278 20120 21986 22215 24733 19077 19278 21221 23126 23249 26010 19701 19598 22096 17963 17903 20089 17817 17747 19921 19586 19894 22442 16831 16778 18597 13356 13482 15057 13356 13482 15057"tmp =list(map(int, data.split(" ")))mat = []for i inrange(0, len(tmp), 9): zz = []for j inrange(i, i +9, 3): z = []for k inrange(3): z.append(tmp[j + k]) zz.append(z) mat.append(zz)bm =Matrix(3,3, base)flag =b""for i in mat: tmp =Matrix(i) res = bm.solve_left(tmp)for j inlist(res):for k in j: flag +=bytes([k])print(flag)