Rating:

### Overview

Both can be solved with this solution. The servers sends a timestamp and a few random numbers. The goal is to send back the next number in the sequence.

### Idea

The sequence starts with the very first number after a random seed is set, so we can narrow the search space to seeds that start with it. After getting a few candidates, it is possible to check if the other numbers match by using the provided algorithm. The server doesn't have rate limiting, so we can check just a subset of random seeds and request another batch of numbers if none fit.

### Solution

Step 1: Dump a few pairs of (seed, first_random_number) in a file


"

d = {}

i = 0

with open('data.csv') as csvfile:

i+=1
# check if in dict
if i == 20796091:
break
if row[0] in d:
d[row[0]].append(row[1])
else:
d[row[0]] = [row[1]]
z = row[0]

while True:
r = requests.post(url)
data = r.text.split("\\n")

data[0] # time
leak = data[1]

if leak in d:
number = os.popen(f"php a.php {len(d[leak])} {' '.join(d[leak])} {' '.join(data[:-2])}").read()

print(f"Number: {number}")


ENO{M4sT3r_0f_R4nd0n0m1c5} - randrevenge
ENO{PHD_1N_TrU3_R4nd0n0m1c5_516189} - randrevengerevenge