import random
from hashlib import md5
def get_mask():
file = open("random.txt","w")
for i in range(104):
file.write(str(random.getrandbits(32))+"\n")
file.write(str(random.getrandbits(64))+"\n")
file.write(str(random.getrandbits(96))+"\n")
file.close()
get_mask()
flag = md5(str(random.getrandbits(32)).encode()).hexdigest()
print(flag)
对于MT19973有randcrack一把梭
要求去求生成104组随机数之后的下一个随机数。
这道题的漏洞 在于这个函数
random.getrandbits(k)
该函数随 MersenneTwister 生成器一起提供,由于MT算法存在漏洞,所以这种伪随机数生成算法并不安全。
MT算法能生成1-623个32位随机数,而我们有 (32/32+64/32+96/32)*104=624个已知随机数,那么我们就完全可以求出下一个随机数。
但是,MT只能生成32位随机数,如果是64位随机数该怎么生成呢?
<