29 lines
756 B
Python
29 lines
756 B
Python
import json
|
|
import sys
|
|
|
|
# https://github.com/lynn/hello-wordl/blob/7da40c1f067eb1ec157d4c5b7a9bd8257ed39342/src/util.ts#L14
|
|
def rshift(n, a): return (n & 0xffff_ffff) >> a
|
|
|
|
def mulberry32(rng_state):
|
|
def worker():
|
|
nonlocal rng_state
|
|
rng_state += 0x6d2b79f5;
|
|
t = rng_state
|
|
t = (t ^ rshift(t, 15)) * (t | 1) & 0xffff_ffff
|
|
t ^= t + (t ^ rshift(t, 7)) * (t | 61) & 0xffff_ffff
|
|
return (t ^ (t >> 14))
|
|
return worker
|
|
|
|
with open('targets.json', 'r') as f:
|
|
targets = json.load(f)
|
|
|
|
targets = targets[:targets.index('murky') + 1]
|
|
targets = [i for i in targets if len(i) == 5]
|
|
|
|
rng = mulberry32(int(sys.argv[1]))
|
|
while True:
|
|
num = rng()
|
|
index = num * len(targets) >> 32
|
|
print(f'{num:08x}', index, targets[index])
|
|
if targets[index] != '*****': break
|