def crackSeed(): seed = 0 randWait = random.randrange(40, 1001) time.sleep(randWait) realSeed = int(time.time()) print(realSeed) MT19937.seed_mt(realSeed) randWait = random.randrange(40, 1001) time.sleep(randWait) val = MT19937.extract_number() currTime = int(time.time()) rangeOfVals = 0 while seed == 0: for i in range(rangeOfVals, rangeOfVals+100000): testSeed = currTime - i MT19937.seed_mt(testSeed) firstVal = MT19937.extract_number() if firstVal == val: seed = testSeed break if seed !=0: return seed rangeOfVals += 100000 print('NewVals') return None
def generatePasswordToken(): tokenLen = 13 token = [] MT19937.seed_mt(int(time.time())) for i in range(tokenLen): randNo = MT19937.extract_number() randNo = randNo%256 token.append(randNo) token = bytes(token) return token
def testIfTokenGenByMT19937(token): timestamp = int(time.time()) for i in range(10000): testSeed = timestamp-i MT19937.seed_mt(testSeed) isSeed = True for j in range(len(token)): if token[j] != MT19937.extract_number()%256: isSeed = False if isSeed: return True return False
def MT19937cipher(ipBytes, seed): seedSizeInBits = 16 seed = (bin(abs(seed))[2:]).zfill(seedSizeInBits) seed = int(seed[len(seed) - seedSizeInBits:], 2) MT19937.seed_mt(seed) output = [] for i in range(len(ipBytes)): randNo = MT19937.extract_number() randNo = randNo % 256 output.append(randNo ^ ipBytes[i]) output = bytes(output) return output
def main(): randomizeMT() crackMT() isSame = True for i in range(200 * n): extractedNo = MT19937.extract_number() predictedNo = extract_number_cracked() if predictedNo != extractedNo: print(i) isSame = False if isSame: print("Cracked!!")
def initialiseMT(): global MT for i in range(n): output = MT19937.extract_number() number = unTemper(output) MT.append(number)
def randomizeMT(): for i in range(random.randrange(0, n)): no = MT19937.extract_number()