首页 > 其他分享 >[SWPUCTF 2021 新生赛]fakerandom 关于random.seed的一些事

[SWPUCTF 2021 新生赛]fakerandom 关于random.seed的一些事

时间:2024-05-15 21:09:14浏览次数:16  
标签:SWPUCTF fakerandom random flag range seed result 随机数

最近开始接触reverse了,难得有些力不从心(本质还是汇编看不懂),来看看这道题吧。

点击查看代码
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]
当时看到题时第一反应就是直接xor回去不就得了,后来想到一个很蠢的问题,random会生成随机数,所以我想到难道每次生成的随机数都相同,应该是不同的吧(这里忘了设置seed后生成的就是固定的了),那么flag^random^random 两个random若不同那不就xor不回去了吗?后来想起了seed的一些事情,这里就说说。

可以看到seed相同的时候生成的随机数是相同的,那么这个很蠢的问题就迎刃而解了。
第一次l就是固定的random[34, 145, 216, 205]。
而下一个循环里的random分别为:
l[1][135, 91, 149, 7, 215]
l[2][222, 193, 206, 108, 233]
l[3][219, 53, 164, 47, 181]
l[4][111, 123, 185, 25, 137]

这样NSSCTF不就出来了。

标签:SWPUCTF,fakerandom,random,flag,range,seed,result,随机数
From: https://www.cnblogs.com/jocker-love-you/p/18194699

相关文章

  • python教程6.2-OS模块random模块
    OS模块   random模块 ......
  • crypto.randomUUID()
    crypto.randomUUID()是一个函数,用于生成一个随机的通用唯一标识符(UniversallyUniqueIdentifier,UUID)版本4。这个函数常在编程中用于创建唯一的字符串标识,适用于各种需要唯一性的场景,如数据库记录、会话管理、临时文件命名等。在不同的编程语言和环境中,其实现细节可能有所不同......
  • 解决crypto.randomUUID is not a function
    不在https、localhost等不安全的环境中访问时,crypto.randomUUID是不可用的。如果这个是由第三方库引起的,如果不影响使用可以不解决,如果影响到使用,暴力解决办法为修改node_modules里面的代码。记得清除构建工具(例如vite)的缓存(例如./node_modules/.vite文件夹)下面以prefect框架......
  • CF1842H Tenzing and Random Real Numbers 题解
    题目链接点击打开链接题目解法实数的概率好反直觉!对\(1\)做限制不是很好做,考虑变成正负性的限制(即对\(0\)做限制)令\(y_i=x_i-0.5\),那么限制就变成了\(y_i+y_j\le0,\;y_i+y_j\ge0\)这里要给出一些实数概率的结论:实数下,\(x=y\)的概率为\(0\),因为\(\frac{1}{\inft......
  • Python基础-模块和包(hashlib、random、json、time、datetime和os模块)
    什么是模块和包?模块:python中的.py文件,将一些功能按照某一种维度进行划分;自定义、内置。、第三方.包:文件夹里面好多个.py文件。在讨论的时候,一般统称为:模块。学习:自定义模块和包+使用内置模块+使用第三方模块+使用1自定义模块和包1.1快速上手-项目文件夹(......
  • R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析|附代码数据
    全文链接:http://tecdat.cn/?p=22596最近我们被客户要求撰写关于预测心脏病的研究报告,包括一些图形和统计输出。本报告是对心脏研究的机器学习/数据科学调查分析。更具体地说,我们的目标是在心脏研究的数据集上建立一些预测模型,并建立探索性和建模方法。但什么是心脏研究?研究大纲......
  • 模块(time、datetime、os、random、日志logging、hashlib)
    【一】time模块【1】表示时间的三种方式时间戳元组(struct_time)格式化的时间字符串:格式化的时间字符串(FromatString):'1999-12-06'【2】时间转换(1)导入时间模块importtime(2)时间戳[1]生成时间戳importtime#生成时间戳,时间戳是浮点数类型time_str=time.time......
  • get_random
    defget_random():importosimportrandomimportstringimportbinasciidefto_hex(val):returnformat(val,'02x')defrandom_string(length):letters=string.ascii_letters+string.digitsreturn......
  • CF1067E Random Forest Rank 题解
    这道题涉及了组合分析和概率。本质上,当以一定的概率从给定的树中删除边时,您需要找到结果林的邻接矩阵的期望秩。要解决这个问题,可以使用动态规划。我们用\(f(u,v)\)表示当删除边\((u,v)\)时,由以顶点\(v\)为根的子树中的顶点形成的林的期望秩。这里,\(u\)和\(v\)是树中的......
  • time模块,datetime模块,os模块,random模块,logging模块,hashlib模块
    Ⅰtime模块【1】表示时间的三种方式#【1】时间戳表示时间:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数#我们当时给函数计时两次时间戳相减得到了消耗的总时间#【2】元组(struct_time)(年,月,日,时,分,秒,......