私はLinux上のテキストファイルで作成した単語のリストを取得し、ステガノグラフィー抽出プログラムに対して単語をチェックするプログラムを通して実行する簡単なスクリプトを作成しようとしています。私ができましたPythonでは、リストからlinuxコマンドにどのようにデータを入力しますか?
steghide --extract -p {ここでパスワード} -sf {ここにファイル名}:
プログラム(steghide)
は、コマンドで次の構文を使用していますファイルを呼び出してリスト内の単語のforループを設定しますが、その繰り返しから各コマンドに単語を入力する方法は見つかりません。ここで私はそれをどうしようとしています。
import os import sys script, filename = argv filename2 = sys.open(filename) for word in filename2: os.system('steghide --extract -p [want to put something here] -sf stegfilename')
私は制御された箱に入っており、既に持っているものを超えるものをダウンロードすることはできません。どんな助けもありがとうございます。
更新:
私はそれを動作させました。しかし、今、正しい答えが見つかると、それを終了させるようにしています。私はちょうどPythonに出力を読むのに苦労しています。ここに私がこれまで持っているものがあります。
FとしてオープンとSYSインポートARGV
スクリプト、ファイル名= ARGV 通過=ファイル名
(通過)から `インポートサブプロセス :Fの行のための : PROC = subprocess.popen(stdout = proc.communicate()[0]このファイルを編集するには、次のように入力します。[stghout = 出力= proc.stdout.readline()
if 'wrote' in output: print 'YOU FOUND IT!' break else: print line`
私はうまくいきましたが、正しいパスワードが見つかったらすぐに終了しようとしています。ここに私がこれまで持っているものがあります。SYSインポートARGVからインポートサブプロセス スクリプト、ファイル名= ARGV 通過=ファイル名Fとして(通過)オープンと : \t \t PROC = subprocess.popen([ 'steghide'、 'Fの行のための \t --extract」、 '' line.strip()、 '-sf'、 'steggedファイル名'] -p、STDOUT = subprocess.PIPE) \t \t STDOUT = proc.communicate()[0] \t \t出力= proc.stdout.readline() \t \t \t出力に「書いた」場合: \t \t \t印刷 'YOU FOUND IT!' \t \t \tブレーク他 \t \t: \t \t \t印刷ライン – Brad
@Brad 'steghide'は、C/Unixの慣習に従っており、成功すれば0を返し、1の場合ではありません。成功すると 'subprocess.call'とともに' break'を使ってください( 'subprocess.call'はプロセスの戻りコードを返します)。 'subprocess.PIPE'、' proc.communicate()[0] 'などは必要ありません。 – jDo