import random var("x y") flag = int(open('flag.txt','rb').read().hex(),16) xs = [random.randint(1,256) for i in range(9)] ys = [random.randint(1,256) for i in range(9)] assert not any([xs[i]==ys[i] for i in range(9)]) c = [random.randint(1,2^64) for i in range(len(xs))] f(x,y)=c[0]*x^2+c[1]*y^2+c[2]*x*y+c[3]*x+c[4]*y+c[5] solns = [int(f(xs[i],ys[i])) for i in range(len(xs))] print([(xs[i],ys[i],solns[i]) for i in range(9)]) a,b = random.randint(1,2^40),random.randint(1,2^40) print(a,b) print((int(f(a,b)))^^flag)
やるだけ
import ast import random with open("output.txt") as f: vals = ast.literal_eval(f.readline().strip()) a, b = [int(x) for x in f.readline().strip().split(" ")] flag = int(f.readline().strip()) xs, ys, solns = [v[0] for v in vals], [v[1] for v in vals], [v[2] for v in vals] c0, c1, c2, c3, c4, c5 = var("c0 c1 c2 c3 c4 c5") s = solve([c0*xs[i]^2+c1*ys[i]^2+c2*xs[i]*ys[i]+c3*xs[i]+c4*ys[i]+c5 == solns[i] for i in range(9)], [c0, c1, c2, c3, c4, c5])[0] print(s) c = [x.right() for x in s] print(c) x, y = var("x y") f = c[0]*x^2+c[1]*y^2+c[2]*x*y+c[3]*x+c[4]*y+c[5] print(bytes.fromhex(hex(int(f(x=a, y=b)) ^^ flag)[2:]))