除非我添加尽可能接近零的延迟,否则我的 python 脚本无法正常工作。为什么会发生这种情况,我该如何解决?

问题描述 投票:0回答:0

最近了解到一个东西叫定时攻击。我开始编写脚本来探索这个问题,但现在由于某种原因我收到错误消息:“第 28 行,在 lenghts.append(时间[最大(时间)]) ^^^^^^^^^^^ ValueError: max() arg 是一个空序列” 在我的脚本中的某个位置执行时没有超小延迟。老实说,我不知道为什么会这样。我的脚本如下:

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}")
现在我有延迟,当我开始删除我的打印语句时,代码停止工作。为了解决这个问题,我添加了这个延迟,但我不知道为什么这是必要的。有人可以解释一下吗?

python time delay valueerror
© www.soinside.com 2019 - 2024. All rights reserved.