首页 > 解决方案 > 为什么我的脚本不打印找到的密码?相反,它只是不断尝试其他密码

问题描述

我正在尝试在 Python 3 中编写一个 zip 密码破解程序,我希望程序在找到密码时打印“找到密码:密码”。我的问题是,当它输入正确的密码时,它不会打印“找到的密码:密码”,它只是不断尝试列表中的其他单词“尝试密码:密码”

from zipfile import ZipFile
import zipfile
import threading
import sys

filename = input("Enter File to crack: ")
wordlist = input("Enter wordlist: ")

def crackzip(filename, password):
    try:
        zipname.extractall(pwd=password)
        print ('Found password: {}'.format(password.encode('utf-8')))
        sys.exit(0)
    except:
        print ("Trying Password: {}".format(password))

def principio():
    try:
        zipname = zipfile.ZipFile(filename)
    except zipfile.BadZipfile:
        print ("File doesn't exist!")
    except FileNotFoundError:
        print ("No such file or directory")

    try:
        with open(wordlist, 'r') as f:
            passlist = f.readlines()
    except IOError:
        print ("File NOT found!")

    for passwords in passlist:
        password = passwords.strip(b'\n')
        t = threading.Thread(target=crackzip, args=(filename, password))
        t.start()

if __name__ == "__main__":
    principio()

标签: pythonpython-3.xpython-multithreadingzipfile

解决方案


您在函数zipname内部声明的位置在哪里crackzip

try 语句总是评估这样的错误。

import threading
import sys

filename = input("Enter File to crack: ")
wordlist = input("Enter wordlist: ")

def crackzip(zipname, password):
    try:
        zipname.extractall(pwd=password)
        print ('Found password: {}'.format(password.encode('utf-8')))
        sys.exit(0)
    except:
        print ("Trying Password: {}".format(password))

def principio():
    try:
        zipname = zipfile.ZipFile(filename)
    except zipfile.BadZipfile:
        print ("File doesn't exist!")
    except FileNotFoundError:
        print ("No such file or directory")

    passlist = []

    try:
        with open(wordlist, 'r') as f:
            passlist = f.readlines()
    except IOError:
        print ("File NOT found!")

    for passwords in passlist:
        password = passwords.strip(b'\n')
        t = threading.Thread(target=crackzip, args=(zipname, password))
        t.start()

if __name__ == "__main__":
    principio()

推荐阅读