如何减少Python crypt模块破解短密码的时间问题?

2024-09-24 06:34:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力拼读简短的单词。密码长度应为1-3(字母数字)或1-6(数字)。 我有密码.txt以及字典.txt文件夹。如果字典不能帮我们找到密码,那我只好用蛮力找到了

我的问题是,我只能解决,如果密码长度是6(数字)或3(字母数字),你可以看到。你知道吗

import crypt
import secrets
import string


def testPass(cryptPass):

salt = cryptPass[0:2]
dictFile = open('dictionary.txt', 'r')

for word in dictFile.readlines():

    word = word.strip('\n')
    cryptWord = crypt.crypt(word, salt)

    if(cryptWord == cryptPass):
        print('Found password:', word, '\n')
        return

alphabet = string.ascii_letters + string.digits
alphabet2 = string.digits


while(True):


    numericPassword = ''.join(secrets.choice(alphabet2) for i in range(6))
    cryptedWord = crypt.crypt(numericPassword, salt)


    alphaNumericPassword = ''.join(secrets.choice(alphabet) for i in range(3))
    cryptedWord2 = crypt.crypt(alphaNumericPassword, salt)


    if(cryptPass == cryptedWord):
        print('Password found:', numericPassword, '\n')
        break


    elif(cryptPass == cryptedWord2):
        print('Password found:', alphaNumericPassword, '\n')
        break



def main():


print()

passFile = open('passwords.txt')

for line in passFile.readlines():

    if ":" in line:

        user = line.split(':')[0]
        cryptPass = line.split(':')[1].strip('\n')
        print("Cracking password for:", user)
        testPass(cryptPass)


main()

我试着添加更多的线条,比如

alphaNumericPassword = ''.join(secrets.choice(alphabet) for i in range(1))
alphaNumericPassword = ''.join(secrets.choice(alphabet) for i in range(2))

或者

  numericPassword = ''.join(secrets.choice(alphabet2) for i in range(4))

  numericPassword = ''.join(secrets.choice(alphabet2) for i in range(5))

但是当我添加这些行时,它不会产生任何结果(我想是因为有太多的可能性)。我也尝试过嵌套循环,但没有任何改变。我怎么知道?你知道吗


Tags: intxt密码forrange数字wordsecrets