# FROM python:3 import random withopen("flag.txt","rb") as f: flag=f.read() for i inrange(2**64): print(random.getrandbits(32)+flag[random.getrandbits(32)%len(flag)]) input()
import random flag = b'XTCF{22333111}' res, data = [], [] for i inrange(2**64): a = random.getrandbits(32) b = random.getrandbits(32) res.append(a + flag[b % len(flag)]) t1 = a >> 24 t2 = res[i] >> 24 if t1 != t2: print(i) print(t1) print(t2) break
from Crypto.Util.number import * from random import * from tqdm import * from pwn import *
io = remote('1.95.57.127', 3001) gift = [] for i in trange(4992): gift.append(eval(io.recvline())) io.sendline(b'1') RNG = Random()
defconstruct_a_row(RNG): row = [] for i inrange(4992): #测试了一下高8位需要4992组 row += list(map(int, bin(RNG.getrandbits(32) >> 24)[2::].zfill(8))) RNG.getrandbits(32) return row
L = [] for i in trange(19968): state = [0]*624 temp = "0"*i + "1"*1 + "0"*(19968-1-i) for j inrange(624): state[j] = int(temp[32*j:32*j+32],2) RNG.setstate((3,tuple(state+[624]),None)) L.append(construct_a_row(RNG))
L = Matrix(GF(2),L) # print(L.nrows(), L.ncols()) # print(L.rank()) R = [] for i in trange(4992): R += list(map(int, (bin(gift[i] >> 24)[2:].zfill(8))))
R = vector(GF(2),R) s = L.solve_left(R) # print(s)
init = "".join(list(map(str,s))) state = [] for i inrange(624): state.append(int(init[32*i:32*i+32],2))
RNG1 = Random()
for length in trange(5, 100): RNG1.setstate((3,tuple(state+[624]),None)) flag = [0] * length for i in gift: tmp = i - RNG1.getrandbits(32) flag[RNG1.getrandbits(32) % length] = tmp if0notin flag: print(bytes(flag)) break