Python脚本暴力破坏bash输入

时间:2018-04-16 12:14:47

标签: python bash python-2.7 terminal subprocess

Bash计划:

user@root:~/Downloads# ./program
What is the password?

所以它要求输入,如果你得到了正确的密码,它继续使用该程序,否则它将退出(为了问题,密码是0到1000的数字)。

我需要编写一个Python 2脚本来强制密码。我认为伪代码类似于:

import subprocess    
x = 0
while x <= 1000:
    subprocess.Popen('./program', stdin=PIPE)
    input x
    if program exits:
        continue
    else:
        break
    x += 1

我有非常使用Popen在终端中运行命令的基本知识,但是我不知道如何使用子进程输入字符串 - 我做过的任何Google搜索只是带我去做其他投入的其他人。

我还坚持如何检查程序是否已退出。

谢谢你:)

2 个答案:

答案 0 :(得分:1)

使用Popen的communicate可以在这里工作:

import subprocess
for x in range(0,1000):
    proc = subprocess.Popen('./program', stdin=subprocess.PIPE)
    proc.communicate(str(x))
    if proc.returncode:
        continue

    print "Found the password: " + str(x)
    break

答案 1 :(得分:0)

你可以尝试这样的事情:

from subprocess import check_output
import shlex

output = check_output(shlex.split(your_command_as_string))

如果您的程序不接受密码作为命令行参数,您可以使用以下方法:

import subprocess
import shlex

prog = subprocess.Popen(
    shlex.split(your_command_as_string),
    stdin=subprocess.PIPE
) # run program with piped stdin

for password in your_passwords:
    prog.stdin.write("{}\n".format(password)) # feed password
    if prog.Poll() is not None: # check if program finished
        print(password)
        break