我有一个加密的卷,我几乎可以,但不完全记得密码。
有10个字符我不确定:有些是套管,有些字母与数字有关,可能完全省略。
我可以让python打印出所有可能密码的列表,但是如何让它测试它们以确定正确答案而不是自己输入列表?
到目前为止我所得到的例子 - 让我们说密码短语是“the_pass”的一些游戏
passparts = [["t", "T"], ["h"], ["e", "3"], ["_", ""], ["p"], ["a", "4"], ["s"], ["s"]]
possibilities = itertools.product(*passparts)
for x in possibilities:
possible = "".join(x)
print possible
每次都可以让python测试“可能”,看看它是否可以解密音量?
另外我的真实世界问题有2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 3 = 1536种可能性,我假设python可以足够快地测试每一个这不会有问题吗?
答案 0 :(得分:0)
也许我在解释这个问题方面表现不佳,但我解决了这个问题并在此处发布了答案,以防其他人发生这种情况。
所以,我发现你可以使用pexpect轻松启动并与终端进程交互,你需要下载它。无论如何,这对我有用:
passparts = [["t", "T"], ["h"], ["e", "3"], ["_", ""], ["p"], ["a", "4"], ["s"], ["s"]]
possibilities = itertools.product(*passparts)
for x in possibilities:
possible = "".join(x)
print possible
child = pexpect.spawn('udisksctl unlock -b /dev/sdc2')
child.logfile = open("/tmp/mylog", "w")
child.expect(".*")
child.sendline(possible)
child.expect(".*")
print(child.before)
child.expect(pexpect.EOF, timeout=None)
print child.before
print child.after
不是一种非常快速的方法,但它在不到10分钟内找到了正确的密码。