伪随机数python.random

例题:NSSCTF fakerandom

1
2
3
4
5
6
7
8
9
10
11
12
13
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]

首先运行看看l里面有什么

1719897955929-a4ced28d-f685-4916-8fc1-6ab52c6309c1.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import random
flag = 'xxxxxxxxxxxxxxxxxxxx'
result = [201, 8, 198, 68, 131, 152, 186, 136, 13, 130, 190, 112, 251, 93, 212, 1, 31, 214, 116, 244]
key = []
random.seed(1)
l = []
for i in range(4):
l.append(random.getrandbits(8))
#print(l)
result=[]
for i in range(len(l)):
random.seed(l[i])
for n in range(5):
key.append(random.getrandbits(8))
print(key)
# result = [201, 8, 198, 68, 131, 152, 186, 136, 13, 130, 190, 112, 251, 93, 212, 1, 31, 214, 116, 244]

再把key提取出来,再异或

1719898074578-d8c33f43-94fd-488e-8cf8-e1818ce44496.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import random
flag = 'xxxxxxxxxxxxxxxxxxxx'
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]
random.seed(1)
l = []
for i in range(4):
l.append(random.getrandbits(8))
#print(l)
for i in range(len(l)):
random.seed(l[i])
for n in range(5):
key.append(random.getrandbits(8))
for i in range(len(result)):
print(chr(result[i] ^ key[i]),end='')
# result = [201, 8, 198, 68, 131, 152, 186, 136, 13, 130, 190, 112, 251, 93, 212, 1, 31, 214, 116, 244]

NSSCTF{FakeE_random},得到flag

更新: 2024-07-02 13:31:23
原文: https://www.yuque.com/chaye-apqbl/vsc85q/tihnf3qxk2bphuwh


http://example.com/2026/01/19/RE/例题/NSSCTF/伪随机数python.random/
Author
chaye
Posted on
January 19, 2026
Licensed under