使用Python查找LUKS密码

时间:2017-07-27 06:58:58

标签: python encryption

我有一个加密的卷,我几乎可以,但不完全记得密码。

有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可以足够快地测试每一个这不会有问题吗?

1 个答案:

答案 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分钟内找到了正确的密码。