使用 JohnTheRipper 的蛮力字母数字密码

信息安全 密码 蛮力 密码破解 开膛手约翰
2021-08-20 14:29:12

我最近恢复了一个包含一些我需要访问的文件的 zip 存档,但我不记得密码了。我只记得密码很短(大约 3-4 个字符),并且只包含小写字符和可能的数字)。然而,在 John the Ripper 中没有针对这种特殊情况的增量模式。最接近的是 lanman,它还通过包含大写字符来显着增加可能的密码集,我很肯定密码不包含任何密码。

例如,虽然我可以编辑 john.conf 文件以使特定模式仅包含 4 个字符,但我不知道如何自定义要尝试的字符集。我怎么能这样做?

3个回答

小写+数字

增量实际上有一个小写+数字的预定义模式:

[Incremental:LowerNum]
File = $JOHN/lowernum.chr
MinLen = 1
MaxLen = 13
CharCount = 36

从文档中

“LowerNum”(小写字母加数字,共 36 个)

只需调整MinLenMaxLen

使用某些字符创建新的增量模式

如果您想chr使用自定义字符集创建自己的文件,您可以这样做:

john --pot=YOUR.pot --make-charset=YOUR_NEW_FILE.chr --external=filter_lowernum

filter_lowernum是确定chr文件中将包含哪些字符的过滤器它在您的john.conf(下[List.External:Filter_LowerNum])中定义,您也可以那里创建自己的过滤器LowerNum 的代码如下所示:

[List.External:Filter_LowerNum]
void filter()
{
    int i, c;

    i = 0;
    while (c = word[i++])
    if (((c < 'a' || c > 'z') && (c < '0' || c > '9')) || i > 13) {
        word = 0; return;
    }
}

然后只需将增量过滤器添加到您的配置中。

您可以运行以下 python 代码来执行此操作

import zipfile,sys,time
import itertools
def extractFile(zFile, password):
    try:
        answer= zFile.extractall(pwd=password)
        print 'Fount password : ', password
        return True
    except:
        #print password + " was incorrect"
        return False
def main(ifile):
    zFile = zipfile.ZipFile(ifile)
    pass_str = "abcdebcdefghijklmnopqrstuvwxyz0123456789"
    for pass_len in range(1,5):
        passwords = itertools.permutations(pass_str,pass_len)
        for password in passwords:
            #print password
            #time.sleep(.01)
            password = ''.join(password)
            sys.stdout.write("\r checking .. %s" % password )
            sys.stdout.flush()

            if (extractFile(zFile, password)):
                print "checked  "+password+"  ..."
                sys.exit()

if __name__ == '__main__':
    try:
        ifile = sys.argv[1]
    except:
        print "please run like  'python python-file-name.py zip-file-name.zip'"
        sys.exit()    
    main(ifile)

这个程序不需要任何外部库。它的纯蟒蛇。运行 llke

python python-file-name.py zip-file-name.zip

使用开膛手约翰 (JtR),您可以使用以下命令找到压缩文件的密码:

zip2john.exe example.zip > hash.txt
john.exe --incremental=LowerNum hash.txt