道德黑客行为脚本无效 - 没有错误消息

时间:2017-09-03 01:52:29

标签: python zip silent locked

我一直在参加道德黑客攻击课程。本课程的一部分是创建一个Python脚本,从密码列表文本文件中找到锁定的zip文件的密码(希望有意义!) - 基本上遍历尝试每个密码的文本文件。脚本不起作用,不会出错,教师说"好吧,它适用于我" - 没有用。这是脚本:

import optparse
import zipfile
from threading import Thread

def extract_zip(zfile, password):
    try:
        zfile.extractall(pwd=password)
        print("[+] Password Found: " + password + '\n')
    except:
        pass

def main():
    parser = optparse.OptionParser("usage %prog "+\
                                   "-f <zipfile> -d <dictionary>")
    parser.add_option('-f', dest='zname', type='string',\
                      help='specify zip file')
    parser.add_option('-d', dest='dname', type='string',\
                      help='specify dictionary file')
    (options, arg) = parser.parse_args()
    if (options.zname == None) | (options.dname == None):
        print(parser.usage)
        exit(0)
    else:
        zname = options.zname
        dname = options.dname

    zFile = zipfile.ZipFile(zname)
    passFile = open(dname)

    for line in passFile.readlines():
        password = line.strip('\n')
        t = Thread(target=extract_zip, args=(zFile, password))
        t.start()

if __name__ == '__main__':
    main()

另外两个文件是带有密码列表的文本文件,以及受密码保护的zip文件,其中文本文件中的一个密码将解锁它。

在课程中提到了一个线程,提到optparse被删除了,而argparse是它的替代品 - 但即使用那个也没有用来重写脚本。

由于不想关闭课程的这一部分,我正在寻找帮助,解释为什么这不起作用。

提前感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:0)

根据我上面的评论 - 我在“try”声明下方添加了以下代码:

mysql: ./mysql.sh

...然后改变了

password = bytes(password.encode('utf-8'))

print('[+] Password Found: ' + password + '\n')

现在我将密码打印到控制台,并解压缩zip文件。这是最终的工作代码。

print("[+] Password Found: " + (password.decode("utf-8")) + '\n')

我发现这种情况的方法是更改​​'except'语句以将异常打印到控制台:

import optparse
import zipfile
from threading import Thread


def extract_zip(zfile, password):
    try:
        password = bytes(password.encode('utf-8'))
        zfile.extractall(pwd=password)
        print("[+] Password Found: " + (password.decode("utf-8")) + '\n')
    except:
        pass


def main():
    parser = optparse.OptionParser("usage %prog " + '-f <zipfile> -d <dictionary>')
    parser.add_option('-f', dest='zname', type='string', help='specify zip file')
    parser.add_option('-d', dest='dname', type='string', help='specify dictionary file')
    (options, args) = parser.parse_args()
    if (options.zname is None) | (options.dname is None):
        print(parser.usage)
        exit(0)
    else:
        zname = options.zname
        dname = options.dname

    zFile = zipfile.ZipFile(zname)
    passFile = open(dname)

    for line in passFile.readlines():
        password = line.strip('\n')
        t = Thread(target=extract_zip, args=(zFile, password))
        t.start()


if __name__ == '__main__':
    main()

从那里我有几个问题要解决,但至少我有错误可以使用。一旦密码成功登录到控制台,我将exeception语句更改回“pass” - 不需要查看失败的密码!

我希望这可以帮助别人解决我遇到的同样问题。

答案 1 :(得分:-1)

我使用python3运行你的代码它没有问题我很久以前做了这个 这是一本叫做暴力的书

password.txt应包含此行

受害者:HX9LLTdc / jiDE:503:100:Iama受害者:/ home / victim:/ bin / sh root:DFNFxgW7C05fo:504:100:Markus Hess:/ root:/ bin / bash

并且命令看起来应该是这样的 python stack.py -f evil.zip -d passwords.txt