import random from Crypto.Util.number import * class LCG: def __init__(self, seed, a, b, m): self.state = seed self.a = a self.b = b self.m = m def next(self): self.state = (self.a * self.state + self.b) % self.m return self.state myseed = random.randint(2,2**31) lcg = LCG(myseed, 1103515245, 12345, 2**31) f=file('flag.png','r') allbytes = f.read() f.close() encryptedflag = '' for i in range(0, len(allbytes), 4): pseudorand = lcg.next() plaintextchunk = allbytes[i:i+4] cipherchunk_as_int = pseudorand ^ bytes_to_long(plaintextchunk) encryptedflag += long_to_bytes(cipherchunk_as_int, 4) f=file('flag.png.enc','w') f.write(encryptedflag) f.close()