【问题标题】:Ethical hacking script not working - no error message道德黑客脚本不起作用 - 没有错误消息
【发布时间】:2018-02-11 15:54:20
【问题描述】:

我一直在参加道德黑客课程。课程的一部分是创建一个 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 是它的替代品 - 但即使用它重写脚本也不起作用。

由于不想结束这部分课程,我正在寻求帮助,了解为什么这不起作用。

提前感谢您对此提供的任何帮助。

【问题讨论】:

  • 您是否在负责提取密码的 if 条件下调试您的代码调试,并看到您可能在读取文件时出错。
  • 我还不知道该怎么做。我试过使用调试器,但现在超出了我的知识范围。看代码,(options, arg) 有问题吗?
  • 安装 pycharm 并去 youtube 调试 python 很容易。
  • 感谢 - 已安装 - 现在正在学习...
  • 好的 - 让脚本解压缩并提供密码。最后一个错误——不是打印“[+] Password Found: 'login'”,而是打印“[+] Password Found: b'login'”——不确定“b”来自哪里。这是 extract_zip 语句: def extract_zip(zfile, password): try: password = bytes(password.encode('utf-8')) zfile.extractall(pwd=password) print('[+] Password Found: ' + str (密码) + '\n') 除外:通过

标签: python zip silent locked


【解决方案1】:

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

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

...然后改变了

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

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

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

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()

我发现这一点的方法是更改​​“except”语句以将异常打印到控制台:

except Exception as e: print(e)

从那里我有几个问题要解决,但至少我有错误需要处理。密码成功登录到控制台后,我将异常语句改回“通过” - 不需要查看失败的密码!

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

【讨论】:

    【解决方案2】:

    我使用 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

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多