s4ctf_2021

S4CTF 2021 | pts

#s4ctf_2021 隣接行列によって無向非巡回グラフが与えられるから、全域木の個数を返せ、という問題 全域木の個数はラプラシアン行列の余因子で与えられる from ptrlib import Socket import ast sock = Socket("198.211.127.76", 3580) while True: sock.rec…

S4CTF 2021 | malady

#s4ctf_2021 #!/usr/bin/env sage from flag import flag def make_matrix(n): Zn = IntegerModRing(n) G = GL(2, Zn) while True: a, b, c, d = [randint(0, n - 1) for _ in range(4)] P = G([[a, b], [c, d]]) if P in G: return P def bpow(P, n): if n …

S4CTF 2021 | phillip

#s4ctf_2021 #!/usr/bin/env python3 from Crypto.Util.number import * from gmpy2 import next_prime, gcd, lcm from random import randint import sys, os, signal import inspect from flag import flag def make_params(nbit): p, q = [getPrime(nbit)…

S4CTF 2021 | Baby-RSA

#s4ctf_2021 #!/usr/bin/env python3 # -*- coding: utf-8 -*- from Crypto.Util.number import * from flag import flag def create_tuple(nbit): # sorry for dirty code that is not performant! while True: p, q = [getPrime(nbit) for _ in range(2)] …

S4CTF 2021 | merles

#s4ctf_2021 が与えられるのでが成り立つようなを求めよ、という問題。ちなみにこの式はSelmer's exampleと言われている のとき、のすべての要素は3乗根を持つのでを適当に決めたあと、のcube rootを求めれば良い from ptrlib import Socket # https://stack…

S4CTF 2021 | Genie

#s4ctf_2021 #!/usr/bin/env python3 import numpy as np import random from flag import FLAG p = 8443 def vsum(u, v): assert len(u) == len(v) l, w = len(u), [] for i in range(l): w += [(u[i] + v[i]) % p] return w def sprod(a, u): w = [] for i…

S4CTF 2021 | Khayyam

#s4ctf_2021 #!/usr/bin/env python3 from gmpy import * from flag import FLAG l = len(FLAG) // 2 x = int(FLAG[:l].encode("utf-8").hex(), 16) y = int(FLAG[l:].encode("utf-8").hex(), 16) p = next_prime(x) q = next_prime(y) e, n = 65537, p * q …