random模块伪随机数

random模块伪随机数:

所谓伪随机数指当给random设置种子后,里面的生成的随机数序列是固定的,可以被预测的。

不同系统和语言给定相同的种子,random内容不会相同

 

例题:[SWPUCTF 2021 新生赛]fakerandom:

import random
flag = 'xxxxxxxxxxxxxxxxxxxx'
random.seed(1)
l = []
for i in range(4):
    l.append(random.getrandbits(8))
result=[]
for i in range(len(l)):
    random.seed(l[i])
    for n in range(5):
        result.append(ord(flag[i*5+n])^random.getrandbits(8))
print(result)
# result = [201, 8, 198, 68, 131, 152, 186, 136, 13, 130, 190, 112, 251, 93, 212, 1, 31, 214, 116, 244]

WP

import random
flag = 'xxxxxxxxxxxxxxxxxxxx'
random.seed(1)
l = []
for i in range(4):
    l.append(random.getrandbits(8))
result=[]
for i in range(len(l)):
    random.seed(l[i])
    for n in range(5):
        result.append(random.getrandbits(8))
print(result)
# result = [201, 8, 198, 68, 131, 152, 186, 136, 13, 130, 190, 112, 251, 93, 212, 1, 31, 214, 116, 244]
key=[135, 91, 149, 7, 215, 222, 193, 206, 108, 233, 219, 53, 164, 47, 181, 111, 123, 185, 25, 137]
result = [201, 8, 198, 68, 131, 152, 186, 136, 13, 130, 190, 112, 251, 93, 212, 1, 31, 214, 116, 244]

for i in range(len(result)):
    print(chr((result[i]^key[i])), end='')

先将ord(flag[i*5+n])^删除,运行一下,得到与flag异或的列表,再将注释里和异或的列表进行异或,得到flag

NSSCTF{FakeE_random}

posted @ 2025-03-21 10:01  漫宿骄盛  阅读(87)  评论(0)    收藏  举报