2016-08-02 7 views
1

Python 2.7.12でMetasploitペイロードジェネレータを作成しようとしています。 msfvenomを使用して、多くの悪質なペイロードを生成します。Pythonでコマンドライン引数を渡すときに変数を文字列として追加する2.7.12

最初に私は%s%dフォーマット演算子を使用します。

call(["msfvenom", "-p", "windows/meterpreter/reverse_tcp", "LHOST=%s", 
"LPORT=%s", "-e %s", "-i %d", "-f %s", "> %s.%s"]) % (str(lhost), 
str(lport), str(encode), iteration, str(formatop), str(payname), str(formatop)) 

このエラーは、私は、msfvenomは反復フラグだった私が渡し引数を解析することができないことを-iを理解することができる午前

/usr/bin/msfvenom:168:in `parse_args': invalid argument: -i %d 
(OptionParser::InvalidArgument) 
from /usr/bin/msfvenom:283:in `<main>' 
Traceback (most recent call last): 
    File "menu.py", line 74, in <module> 
    call(["msfvenom", "-p", "windows/meterpreter/reverse_tcp", "LHOST=%s", 
"LPORT=%s", "-e %s", "-i %d", "-f %s", "> %s.%s"]) % (str(lhost), 
str(lport), str(encode), iteration, str(formatop), str(payname), str(formatop)) 
TypeError: unsupported operand type(s) for %: 'int' and 'str' 

を返します。それに続いて、PythonのエラーTypeErrorが表示されます。

いくつかの研究を行った後、私は.format()を使用することを決定し、

call(["msfvenom", "-p", "windows/meterpreter/reverse_tcp", "LHOST={0}", 
"LPORT={1}", "-e {2}", "-i {3}", "-f {4}", "> {5}.{6}"]).format(lhost, 
lport, encode, iteration, formatop, payname, formatop) 

ので、それは私が何をすべき

AttributeError: 'int' object has no attribute 'format' 

を返しますか?とにかく私は自分のプログラムを最適化し、同じ行をコピーして貼り付けるのではなく、15種類のオプションのペイロードタイプを変更するのではないでしょうか?

+1

文字列に 'format'を呼び出す必要があります。つまり、値は{}"です。format(1) ' – maxymoo

答えて

0

あなたはcall(...)の結果にformatを使用することはできません。あなたは危険なshell=True引数を有効にしない限りsubprocess.callがシェルにそれを渡すことはありませんので、リダイレクトは明示的に開かれたファイルに置き換えられていること

with open("{}.{}".format(payname, format), 'w') as outfile: 
    call(["msfvenom", "-p", "windows/meterpreter/reverse_tcp", "LHOST={}".format(lhost), "LPORT={}".format(lport), "-e", str(encode), "-i", str(iteration), "-f", str(format)], stdout=outfile) 

注:あなたは、各コンポーネントをフォーマットする必要があります。

異なるペイロードでこれを複数回繰り返すことは簡単です:ペイロードを使って配列を作成し、このコードをループに入れます(または、一度に1つのペイロードで呼び出される関数)。

-1

良いトリックは、これはあまりにも変数置換クリーナーを行います、callに渡されたリストを作成するには、コマンドにsplitを使用することです:

call("msfvenom -p windows/meterpreter/reverse_tcp LHOST={0} LPORT={1} -e {2} -i {3} -f {4} > {5}.{6}" 
    .split().format(lhost, lport, encode, iteration, formatop, payname, formatop)) 
+0

shlex.split:https://docs.python.org/2 /library/shlex.html – Owen

+0

これはPython 2.7.xにも当てはまりますか?返されたエラー: 'AttributeError:' list 'オブジェクトに' format '属性がありません – UncleAlan

関連する問題