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搜索只是带我去做其他投入的其他人。
我还坚持如何检查程序是否已退出。
谢谢你:)答案 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