Py学习  »  Python

python中的Itertools(密码破解程序)

pockspocky • 3 年前 • 1252 次点击  

我做了一个简单的密码破解程序:

import string as s
import itertools as it

things = s.ascii_letters

for digits in range(2, 6):
    for combo in it.combinations(things, digits):
        output = ''.join(combo)
        print(output)

但它并没有打印出所有的可能性。

例如,该程序给出的最后一个输出是:

VWXYZ

如果我有一个以“X”开头的密码,程序将无法找到它。

我有办法解决这个问题吗?我的代码怎么了?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129512
 
1252 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Tarik
Reply   •   1 楼
Tarik    3 年前

您可以将_与_替换组合使用:

import string as s
import itertools as it

things = s.ascii_letters

for digits in range(2, 6):
    for combo in it.combinations_with_replacement(things, digits):
        output = ''.join(combo)
        print(output)
BrokenBenchmark
Reply   •   2 楼
BrokenBenchmark    3 年前

使用 itertools.product() repeat 参数使用 itertools.combinations() 不允许多次选择同一个字母:

import string as s
import itertools as it

things = s.ascii_letters

for digits in range(2, 6):
    for combo in it.product(things, repeat=digits):
        output = ''.join(combo)
        print(output)