2023HWS预选,折腾完毕了,直接吐了,口区…….

sound from somewhere

Misc,题目链接:https://pan.baidu.com/s/1I79m004ilq8-8FthMcT5NA 提取码:caji

声音内容刺耳,是SSTV慢扫描电视的题,慢扫描电视(Slow-scan television)是业余无线电爱好者的一种主要图片传输方法,慢扫描电视通过无线电传输和接收单色或彩色静态图片。所以直接把题目放进SSTV扫一遍就有答案了,工具链接:https://m0re.lanzoux.com/ibgwKk96pyj,安装好之后读入扫就行,这里有一个小点就是输入设备改成立体声混音然后播放音频就不需要麦克风输入了。

扫完就出答案了,这里有一个小细节是可以先点扫描再播音乐,他会自动匹配类型

Number Game

好像是叫这个名字吧….

题目:

import hashlib
import random
from os import urandom


class Random(object):
def __init__(self):
self._id = random.getrandbits(128)
self._code = random.getrandbits(256)

@property
def id(self):
return hex(self._id)[2:].zfill(32)

@property
def code(self):
return hex(self._code)[2:].zfill(64)

# random.seed(urandom(32))
random_list=[Random() for _ in range(53)]
id=[]
code=[]
for i in range(1, len(random_list)):
id.append(random_list[i].id)
code.append(random_list[i].code)
print(id)
print(code)
print("len=",len(code))


flag=hashlib.md5((random_list[0].id+random_list[0].code).encode()).hexdigest()
print('flag{%s}' %flag)

随机生成128bit的数和256bit的数各53个,但是只给出了后52组,要求求出第一组,emmmmm….真要是随机数那肯定求不出来,可是这玩意不是完全随机,找到一个库直接打,https://github.com/NonupleBroken/ExtendMT19937Predictor。

然后题目是回溯,找到backtrack部分,开打

import random
from extend_mt19937_predictor import ExtendMT19937Predictor

numbers = [random.getrandbits(64) for _ in range(1024)]

predictor = ExtendMT19937Predictor()

for _ in range(78):
predictor.setrandbits(random.getrandbits(256), 256)

_ = [predictor.backtrack_getrandbits(256) for _ in range(78)]

for x in numbers[::-1]:
assert x == predictor.backtrack_getrandbits(64)

啊啊啊啊然后最窒息的地方来了,题目是一个Random类在初始化的时候生成一个id和code,总计生成了53个Random类,然后在回溯的时候填入已知数就得一个类一个类的丢回去,我直接把他分开来填入了,结果就是裂开….臭!

我的答案:

正确答案:

总结: 这个问题就很明显是没有看清楚题目,这个库原理倒是好理解,就是在填入数字的时候,对题目理解不清楚了。嗯,再次总结:臭!