from sage.all import * from rejected import LFSR, taps from binteger import Bin from sock import Sock n = 64 N = 2**30 + 2**29 f = Sock("mc.ax 31669") f.send_line(str(N)) f.send_line("R\n" * 200) inds = [] off = 0 total = 0 for i in range(200): f.read_until(r"took ") num = int(f.read_until(r" ")) total += num print(i, "num", num, "off", off) for j in range(num-1): inds.append(off + 30) inds.append(off + 31) off += 32 off += 32 cols = [] for i in range(64): key = Bin.unit(i, 64).list lfsr = LFSR(key, taps) out = [lfsr.bit() for _ in range(total*32)] cols.append([out[ind] for ind in inds]) mat = matrix(GF(2), cols).transpose() target = vector(GF(2), [1]*mat.nrows()) sol = mat.solve_right(target) print("sol", sol) f.send_line("F") f.send_line(str(Bin(sol[::-1]).int)) f.interact() # dice{so-many-numbers-got-rejected-on-valentines-day-1cc16ff5b20d6be1fbd65de0d234608c}