如何将参数传递给请求用户输入的线程?



我正在尝试自动化sqlmapapi的执行(参见这里)。到目前为止,我的程序看起来非常简单和愚蠢:

def host():
    system("sqlmapapi -s -H 0.0.0.0")
def client():
    system("sqlmapapi -c -H 127.0.0.1")

def run():
    host_thread = Thread(target = host, args=())
    host_thread.start()
    time.sleep(5)
    client_thread = Thread(target=client, args=())
    client_thread.start()
    time.sleep(5)
run()

当两个线程都在运行时,api>显示等待我的用户输入(例如,可以是?用于帮助选项)。是否有可能在我的脚本上定义我的用户输入并将其传递给我的客户端线程,以便我可以,例如,自动打开帮助选项?

编辑:既然它似乎不清楚-放"?"进入args不起作用。客户端是由我的线程启动的,一旦它启动,它就会等待输入。

让你明白它的样子:

[01:32:53] [INFO] Starting REST-JSON API client to 'http://127.0.0.1:8775'...
[01:32:53] [DEBUG] Calling 'http://127.0.0.1:8775'
[01:32:53] [INFO] Type 'help' or '?' for list of available commands
api> 

您应该将?作为参数传递。我不熟悉sqlmapapi,所以请确保正确格式化命令。

def host(arg):
    system("sqlmapapi -s -H 0.0.0.0 {}".format(arg))
def client(arg):
    system("sqlmapapi -c -H 127.0.0.1 {}".format(arg))

def run():
    host_thread = Thread(target = host, args=('?',))
    host_thread.start()
    time.sleep(5)
    client_thread = Thread(target=client, args=('?',))
    client_thread.start()
    time.sleep(5)
run()

最新更新