diff options
Diffstat (limited to 'solve/main.py')
| -rw-r--r-- | solve/main.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/solve/main.py b/solve/main.py new file mode 100644 index 0000000..67a5a91 --- /dev/null +++ b/solve/main.py @@ -0,0 +1,28 @@ +import os +import struct + +BITS = 56 + +FLAG = os.getenv("FLAG", "CSCG{TESTFLAG}") + +A = int.from_bytes(os.urandom(BITS//8), "little") +B = int.from_bytes(os.urandom(BITS//8), "little") +SEED = int.from_bytes(os.urandom(BITS//8), "little") + +def rng(x, size): + return (x*A+B) & ((2**size)-1) + +def gen_random(seed, bits, mask): + state = seed + while True: + state = rng(state, bits) + yield state & mask + +def main(): + print("Here are some random numbers, now guess the flag") + rng = gen_random(SEED, BITS, 0xFF) + for i in range(len(FLAG)): + print(next(rng) ^ ord(FLAG[i])) + +if __name__ == "__main__": + main()
\ No newline at end of file |
