【问题标题】:Cannot retrieve filenames using Python docopt library无法使用 Python docopt 库检索文件名
【发布时间】:2015-08-23 18:58:26
【问题描述】:

我正在阅读 Violent Python 这本书,其中一个例子是一个 zip 文件破解器,它针对一个 zip 文件测试一个包含潜在密码的字典文件(一个文本文件)。

我正在尝试使用docopt 库来解析命令行并为我提供这两个文件的文件名。这是我的代码。

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Basic zip bruteforcer

Usage:
  your_script.py (-f <file>) (-z <zip> )
  your_script.py -h | --help

Options:
  -h --help     Show this screen.
  -f --file     specify dictionary file. (Required argument)
  -z --zip      specify zip file.(Required argument)
  -t --thread   Thread count. (Optional)
  -v --verbose  Turn debug on. (Optional)
"""
from docopt import docopt
import zipfile
from threading import Thread

def extractzip(zfile, password):
    try:
        zfile.extractall(pwd = password)
        print 'password found: ', password
    except:
        return

def main():
    zfile = zipfile.ZipFile(zip)
    with open(file, 'r') as pass_file:
        for line in pass_file.readlines():
            password = line.strip('\n')
            t = Thread(target = extractzip, args = (zfile, password))
            t.start()  

if __name__ == "__main__":
    arguments = docopt(__doc__, version='0.1a')
    extractzip(arguments['<file>'], ['<zip>'])

这是我的代码。

【问题讨论】:

  • 我在阅读暴力 python 时也做了一个,但我隐约记得使用过 docopt 但其他一些解析器......
  • 我也已经用 argpass 做到了,但想用 docopt。

标签: python python-2.7 docopt


【解决方案1】:

你可以这样做

  print arguments['<file>']

获取文件名,类似地获取 zip 文件。我个人没有使用 extractzip 并且不确定它是如何工作的。但是由于 arguments 只是一个列表,因此您可以通过直接访问所需的索引来轻松获取值。

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 2019-03-05
    • 2022-10-15
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2023-03-21
    相关资源
    最近更新 更多