pythonic 语法请教

在爆破密码或者穷举的时候,经常遇到未知位数不定的情况,比如下面的案例
未知 5 位且均为字母或数字,要求穷举出明文和 md5,可用脚本如下

import hashlib

dic = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\"
for i in dic:
    for j in dic:
        for k in dic:
            for m in dic:
                for n in dic:
                    plaintext = \"flag{\"+i+j+k+m+n+\"}\"
                    md5 = hashlib.md5(plaintext.encode(encoding=\'UTF-8\')).hexdigest()
                    if md5.startswith(\"5c686e3746\"):
                        print(\"Success! Text:{} MD5:{}\".format(plaintext,md5))
                        exit(0)

问题:
对于穷举 5 位就写 5 次 for 循环,未知 15 位就写 15 个 for 循环(先不考虑爆破成功的可能性)??
而且跑出结果要十来分钟,是否有更 pythonic 或更高效的语句来优化或精简呢?

相关文章

2 thoughts on “pythonic 语法请教

发表评论

电子邮件地址不会被公开。 必填项已用*标注