Итак, я переписываю ZIP Cracker, опубликованный на Violent Python TJ O'Connor, написанный на Python 2.7.Автор использовал optparse
, но я пошел с argparse
.
Мой код выглядит следующим образом:
import argparse
from threading import Thread
import zipfile
import io
parser = argparse.ArgumentParser(description="Unzips selected .zip using a dictionary attack", usage="CRARk.py -z zipname.zip -f file.txt")
# Creates -z arg
parser.add_argument("-z", "--zip", metavar="", required=True, help="Location and the name of the .zip file.")
# Creates -f arg
parser.add_argument("-f", "--file", metavar="", required=True, help="Location and the name of the word-list/dictionary-list/password-list.")
args = parser.parse_args()
def extract_zip(zipFile, password):
try:
zipFile.extractall(pwd=password.encode())
print("[+] Password for the .zip: {0}".format(password) + "\n")
except:
pass
def main(zip, dictionary):
if (zip == None) | (dictionary == None):
print(parser.usage)
exit(0)
zip_file = zipfile.ZipFile(zip)
pass_file = io.open(dictionary, mode="r", encoding="utf-8")
for line in pass_file.readlines():
password = line.strip("\n")
t = Thread(target=extract_zip, args=(zip_file, password))
t.start()
if __name__ == '__main__':
# USAGE - Project.py -z zipname.zip -f file.txt
main(args.zip, args.dictionary)
И ошибка, которую я получаю:
Traceback (most recent call last):
File "C:\Users\User\Documents\Jetbrains\PyCharm\Project\Project.py", line 39, in <module>
main(args.zip, args.dictionary)
AttributeError: 'Namespace' object has no attribute 'dictionary'
Теперь я немного не уверен, что это значит.Я попытался переименовать args.dictionary
в args.file
или тому подобное, но в итоге я получил пустой ответ на моем терминале, когда я запустил код.Как показано на следующем рисунке, при правильном запуске .py нет ответа / вывода и т. Д.
args.file is used instead of args.dictionary
">
Как это исправить?