2017-10-04 16 views
1

サブプロセスを使用して、既知のパスワードで暗号化されたファイルを復号化するためのpythonスクリプトを介してopensslコマンドを実行しようとしています。Python:サブプロセス経由でopensslを使用して可変パスワードで復号化する

コードは動作しますが、パスワードを変数として保存することができます。つまり、pass = 'password'を入力し、その変数を静的にpass:passwordとしてサブプロセス呼び出しに入力することができます。どのようにパスワードを変数に保存するのか心配することなく、変数としてサブプロセス呼び出しに渡すことに焦点を当てるだけで、これは可能ですか?

OpenSSLのmanページのPASS PHRASE ARGUEMENTSセクションを読んでいたので、他のオプション(env:var, file:pathname, fd:number, or stdin)のどれかを使用しなければならないのが不思議です。しかし、使用中の例を見つけることは難しいので、わかりません。ここで

は、私がこれまで持っているものです。

def decryptfile(): 
decryptFile = subprocess.Popen(["openssl", "aes-256-cbc", "-d", "-a", "-in", "pw.txt", 
           "-out", "pw.dec.txt", "-pass", "pass:password"] 
) 

答えて

0

私は今、かなりの時間のためのpythonで働いている、と私は

を次のようにユーザ定義の変数にサブプロセスモジュールからの出力を格納する方法を知っています

変数としてパスワードを取得する限り、サブプロセス出力(現在変数に格納されている)からリストにデータを分割してみてください。そのリストを必要なものにフォーマットすることもできます。あなたが値をリストインデックスによってそのリストの内部値に相当する値、例とパスワードの変数を設定することができます。

hello = subprocess.getoutput("echo hello") 
list_hello = list(hello) 
# print the index value of 1 to return hello 
# use string interpolation 
print("Second value in subprocess call is : {}".format(list_hello[1])) 
# store the value of "hello" in "echo hello" 
# to a variable 
hello_str = str(list_hello[1]) 
# you should cast the variable to a string 
# data type just to be safe 
print("The value of hello_str is: {}".format(hello_str)) 
+0

それは私が欲しかったものではありません、私はそれをより明確にしようとします。すでに定義されている変数をサブプロセス呼び出し自体に入力できるようにする必要があります。つまり、 'pass:password'を使用する代わりに、変数を使用して、端末にパスワードを入力するのを待ちません。出力を保存することについてのことは、間違いなく私のプログラムの後のほうに役立つでしょうが – Brosta

0

使用文字列補間

value = "my_value" 
subprocess.call("commands {}".format(value), shell=True) 

呼び出すために、その文字列の補間方法を使用します/あなたの変数をあなたのsslコマンド(パスワード)に含める

+0

ほしいと思っていますか、または少なくとも正しい方向にあなたを指しています – user8628164

+0

ありがとう、私は今すぐそれを働かせようとしています。 ! – Brosta

関連する問題