最近了解到一个东西叫定时攻击。我开始编写脚本来探索这个问题,但现在由于某种原因我收到错误消息:“第 28 行,在
import time
lenghts =[]
password="1234567"
def checkpassword(guess):
return password==guess
def most_common(lst):
return max(set(lst), key=lst.count)
maxlenght=10
for _ in range(100):
guessing = True
i = 0
dt = 0
times = {}
while guessing:
guess = i*'x'
t1 = time.perf_counter()
checkpassword(guess)
t2 = time.perf_counter()
#print(f"I: {i}, {t2-t1}")
time.sleep(0.000000000000000000000000000000000000000000000000000000000000000000000000000000000001)
if (i!=maxlenght):
dt=t2-t1
times[dt]=i
else:
guessing = False
#print(guess)
i+=1
for _ in range(int(maxlenght/5)):
lenghts.append(times[max(times)])
times.pop(max(times))
#print(lenghts)
print(most_common(lenghts))
起初我有
print(f"I: {i}, {t2-t1}")
现在我有延迟,当我开始删除我的打印语句时,代码停止工作。为了解决这个问题,我添加了这个延迟,但我不知道为什么这是必要的。有人可以解释一下吗?