Crypto-Determined

"It is my experience that proofs involving matrices can be shortened by 50% if one throws the matrices out." - Emil Artin ( by Anakin)

Challenge

def inputs():
    print("[DET] First things first, gimme some numbers:")
    M = [
        [0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0],
    ]
    try:
        M[0][0] = p
        M[0][2] = int(input("[DET] M[0][2] = "))
        M[0][4] = int(input("[DET] M[0][4] = "))

        M[1][1] = int(input("[DET] M[1][1] = "))
        M[1][3] = int(input("[DET] M[1][3] = "))

        M[2][0] = int(input("[DET] M[2][0] = "))
        M[2][2] = int(input("[DET] M[2][2] = "))
        M[2][4] = int(input("[DET] M[2][4] = "))

        M[3][1] = q
        M[3][3] = r

        M[4][0] = int(input("[DET] M[4][0] = "))
        M[4][2] = int(input("[DET] M[4][2] = "))
    except:
        return None
    return M
def main():
    print("[DET] Welcome")
    M = inputs()
    if M is None:
        print("[DET] You tried something weird...")
        return
    res = fun(M)
    print(f"[DET] Have fun: {res}")

It is similar to the previous question except instead of trace, they give us the determinant of the matrix with p and q values encoded

Let i1,i2,i3,i4,i5,i6,i7,i8,i9 be the inputs. Then the matrix is

We calculate the determinant under the symbolic ring to get a direct equation for the determinant

We can solve for q by setting (i2*i4*i6*i8) = 1 and setting the rest to 0

On solving for q, we can decrypt the flag

Last updated