示例#1
0
def mt19937_ctr(text, seedvalue=constants.seedvalue):
    rng = mt19937.MT19937(seedvalue)
    result = b''
    for i in range(0, len(text), 4):
        keybytes = rng.randint32().to_bytes(4, 'big')[:len(text[i:i + 4])]
        result += set1.xor(text[i:i + 4], keybytes)
    return result
示例#2
0
def toy_routine():
    randsleep()
    seed = timestamp()
    print('!', seed)
    rng = mt19937.MT19937(seed)
    randsleep()
    return rng()
示例#3
0
def challenge23(rndnums):
    assert len(rndnums) >= 624
    rndnums = rndnums[:624]
    rng = mt19937.MT19937()
    rng.mt = list(map(untemper, rndnums))
    rng.mti = mt19937.N
    return rng
示例#4
0
def crack(rand):
    t = int(time.time())
    for i in range(2500, 0, -1):
        gn = rng.MT19937(t - i)
        if gn.extract_number() == rand:
            print("Seed is: ", t - i)
            print("Check: ", pg.check(t - i))
            return t - i
    print("Seek not found")
    return 0
示例#5
0
def rng_stream(seed):
    rng = mt19937.MT19937(seed)
    while True:
        yield from rng().to_bytes(4, 'big')
示例#6
0
import time, secrets

# we use ms instead of s to go faster


def randsleep():
    time.sleep((40. + secrets.randbelow(1000)) / 1000.)


def timestamp():
    return int(1000. * time.time())


def toy_routine():
    randsleep()
    seed = timestamp()
    print('!', seed)
    rng = mt19937.MT19937(seed)
    randsleep()
    return rng()


if __name__ == '__main__':
    t0 = timestamp()
    x = toy_routine()
    t1 = timestamp()
    for t in range(t0, t1):
        rng = mt19937.MT19937(t)
        if rng() == x:
            print('?', t)
示例#7
0
 def __init__(self):
     self.d = 40
     self.h = 1000
     self.__sleep(random.randint(self.d, self.h))
     self.__seed = int(time.time())
     self.__gn = rng.MT19937(self.__seed)
示例#8
0
#!/usr/bin/env python3

import mt19937  # implem. in mt19937.py

# https://www.cplusplus.com/reference/random/mt19937/
# Values can be controlled by the following C++ code:
'''
#include <iostream>
#include <random>
using namespace std;

int main() {
  int seed = 54321;
  mt19937 mt(seed);
  for (int i=0; i<1000; ++i) cout << mt() << endl;
}
'''

if __name__ == '__main__':
    seed = 54321
    rng = mt19937.MT19937(seed)
    print('MT19937 check...', end=' ', flush=True)
    for _ in range(10**5):
        rng()
    assert rng() == 1827882266
    print('ok')