首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的带有'sys.argv‘的python代码不工作

我的带有'sys.argv‘的python代码不工作
EN

Stack Overflow用户
提问于 2019-11-16 13:50:53
回答 1查看 90关注 0票数 0

我正在用python做一个SSRF扫描器,但是我对python中的'sys.argv‘不太了解。以下是我的代码,当我运行(Python3)时它不工作:

代码语言:javascript
运行
复制
class targets:
    def __init__(self, url, ip, port, method, param, error):
        self.url = url
        self.ip = ip
        self.port = port
        self.method = method
        self.param = param
        self.er = error 

    def scan(target):
        print("Success!")
        print(target.url)
        print(target.method)
        print(target.ip)

for carg in sys.argv:
    target = targets('', '', '', '', '', "Please enter a valid command. If you don't know how to use it, enter '-help'")
    if "-u" in carg:
        argnum = sys.argv.index(carg)
        argnum += 1
        target.url = sys.argv[argnum]
        if "-g" in carg:
            argnum += 1
            target.method = "g"
            if "-i" in carg:
                argnum = sys.argv.index(carg)
                argnum += 1
                target.ip = sys.argv[argnum]
            if "-pt" in carg:
                argnum = sys.argv.index(carg)
                argnum += 1
                target.port = sys.argv[argnum]
        if "-p" in carg:
            if not "-pa" in carg:
                print("Please enter the parameters of request(POST)")
                quit
            argnum += 1
            target.method = "p"
            if "-i" in carg:
                argnum = sys.argv.index(carg)
                argnum += 1
                target.ip = sys.argv[argnum]
            if "-p" in carg:
                argnum = sys.argv.index(carg)
                argnum += 1
                target.port = sys.argv[argnum]
        else:
            print(target.er)
            quit
        target.scan()

    elif carg == "-help":
        tuto = open("tutorial.dat", "r")
        tuto.read()
        tuto.close
        print(tuto)
    else:
        print(target.er)

运行此代码后:ssrf.py -u google.com -g -i 123.123.123.123

我收到了这封信:

代码语言:javascript
运行
复制
Please enter a valid command. If you don't know how to use it, enter '-help'
Please enter a valid command. If you don't know how to use it, enter '-help'
Success!
google.com


Please enter a valid command. If you don't know how to use it, enter '-help'
Please enter a valid command. If you don't know how to use it, enter '-help'
Please enter a valid command. If you don't know how to use it, enter '-help'
Please enter a valid command. If you don't know how to use it, enter '-help'

这不是我在等待的东西:

代码语言:javascript
运行
复制
Success!
google.com
g
123.123.123.123

有人能告诉我这段代码有什么问题吗?(如果这是一个愚蠢的问题,我很抱歉,如果英语不好,我很抱歉)

EN

回答 1

Stack Overflow用户

发布于 2019-11-16 14:35:06

sys.argv不是完成这项任务的合适工具。使用argparse。Python文档中包含了大量关于使用sysargparse的示例

Python Doc argparse

示例:

代码语言:javascript
运行
复制
#pars.py
import argparse


parser = argparse.ArgumentParser('SSRF',
    description='SSRF scanner description')

parser.add_argument('-u','--url', metavar='url',
    type=str, required=True, help='url to scan' )

parser.add_argument('-i','--ip', metavar='ip',
    type=str, required=True, help='ip address' )

parsed = parser.parse_args()

# do something parsed.url or parsed.ip
print(parsed.url, parsed.ip)
print(parsed)

# run
#>>> python pars.py --help
#>>> python pars.py -i 133.333.3 -u hello.com
#>>> python pars.py --url world.com --ip 123.45.6
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58887991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档