gpt4 book ai didi

python - 使用 itertools 暴力破解应用程序

转载 作者:行者123 更新时间:2023-11-30 23:30:01 25 4
gpt4 key购买 nike

我正在尝试编写一个应用程序来暴力破解完全小写、仅字母、6 个字符长的密码,其中有 2 个字母重复两次。我尝试使用 itertools.product(string.lowercase, 6)但即使我有一台非常“强大”的计算机,它也没有足够的 RAM 来完成计算,那是因为 itertools实际上在返回之前构建了一个完整的列表。

然后我想到了一个像这样的列表 [0, 0, 0, 0, 0, 0]它会从右向左计数,每当索引达到 26 时,它就会返回到 0,并且它左边的槽会增加 1,除非我还没有找到一种编码方法。

我已经尝试破解这个问题有一段时间了,转向这里是我最后的手段,任何算法技巧都非常受欢迎。我很抱歉提出这种“家庭作业”类型的问题,但我真的被这个问题惊呆了。

最佳答案

使用这样的东西不会占用太多内存:

import itertools
import string

for guess in itertools.product(string.lowercase, repeat=6):
if checkguess(''.join(guess)):
print("Password is: {0}".format(''.join(guess)))

itertools.product 会一一生成可能的组合。它不返回任何内容,它是一个生成器函数。请参阅python documentationitertools 中的所有函数的行为都类似于或处理迭代器,因此得名。

如果您的代码占用了大量内存,您可能需要将其发布到此处,以便我们找到罪魁祸首。

根据 DSM 对更快代码的建议,您可以执行以下操作:

import string
from itertools import product, combinations, permutations

for guess_chars in combinations(string.lowercase, 4):
for doubled_chars in combinations(guess_chars, 2):
for guess in permutations(guess_chars + doubled_chars):
#...

关于python - 使用 itertools 暴力破解应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20876322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com