pixels = [] for y inrange(start_y, height, step_y): for x inrange(start_x, width, step_x): if x + block <= width and y + block <= height: pixels.append(source.getpixel((x, y)))
将题目附件路径传入 extract_pixels 得到重组结果,再将结果作为 ZIP 密码解压后,使用 StegSolve 扫描隐写层即可得到 flag。文章不保存图片附件或图片文件名,也没有在材料中找到最终 flag。
[REDACTED]
题目附件为 manual.pdf,主要是 PDF 隐写。
文本中出现了这句提示:
In case of an undampened local chrono-logical shift, initiate the SCRAMBLE protocol with passphrase 1:PAR4D0X before notifying the on-site Coordinator.
defload_output(filename): result = {"n": [], "c": []} withopen(filename, "rb") as file: for raw_line in file: line = raw_line.strip().decode() ifnot line: continue key, value = (part.strip() for part in line.split("=", 1)) if key != "e": result[key].append(int(value)) return result
defdecrypt(groups, exponent): for group in combinations(zip(groups["n"], groups["c"]), exponent): modulus_product = 1 for modulus, _ in group: modulus_product *= modulus
defshash(value, key): mask = (1 << 256) - 1 state = (ord(value[0]) << 7) & mask for char in value: state = ((key * state) & mask) ^ ord(char) return state ^ len(value)
for key inrange(1_000_000): if shash("Welcome to HGAME 2026!", key) in (x0_1, x0_2): flag_hash = shash("I get the key now!", key) print(f"VIDAR{{{flag_hash:x}}}") break
💬 评论与讨论
分享你的想法和见解