ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

攻防世界 misc题GFSJ1113-【Simple-Math】

攻防世界 misc题GFSJ1113-【Simple-Math】 题目描述一个pdf文件工具python用这个代码就能把结果算出来我个人认为它实际上考的是异或运算和解方程组。import numpy as np import hashlib # 1. 定义系数矩阵 A 和结果向量 b A np.array([ [1, 1, 0, 1, 1, 0, 1, 1, 1, 1], [0, 0, 1, 1, 0, 0, 0, 1, 1, 0], [1, 0, 1, 1, 0, 0, 1, 1, 1, 0], [0, 1, 0, 1, 0, 1, 1, 1, 0, 0], [0, 0, 0, 0, 1, 1, 0, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 1, 0], [1, 0, 0, 0, 0, 1, 0, 1, 1, 1], [0, 0, 0, 1, 0, 1, 0, 0, 0, 1], [0, 1, 1, 0, 0, 0, 1, 1, 1, 0], [0, 0, 0, 1, 0, 0, 1, 1, 0, 1] ], dtypeint) b np.array([1, 0, 1, 1, 0, 0, 0, 1, 0, 1], dtypeint) # 2. 高斯消元法求解 (模2) def solve_gf2(A, b): n len(b) # 构造增广矩阵 aug np.hstack((A, b.reshape(-1, 1))) % 2 for i in range(n): # 寻找主元 pivot -1 for r in range(i, n): if aug[r, i] 1: pivot r break if pivot -1: continue # 无解或多解情况本题假设唯一解 # 交换行 aug[[i, pivot]] aug[[pivot, i]] # 消去其他行 for r in range(n): if r ! i and aug[r, i] 1: aug[r] (aug[r] aug[i]) % 2 return aug[:, -1].astype(int) # 3. 计算并输出 x solve_gf2(A, b) x_str .join(map(str, x)) print(f解向量 x: {x}) print(f拼接字符串: {x_str}) sha1_val hashlib.sha1(x_str.encode()).hexdigest() print(fSHA1: {sha1_val}) print(fFlag: XSCTF{{{sha1_val}}})输出结果解向量 x: [0 0 1 1 0 1 1 0 0 1]拼接字符串: 0011011001SHA1: 103c8041593b4b8e38971db283a7a773b0ffc2eeFlag: XSCTF{103c8041593b4b8e38971db283a7a773b0ffc2ee}
返回列表