我找到以下代码在输出中打印objdump的shellcode或机器代码但在python3中我无法运行它。我怎样才能将它移植到python3:
import subprocess
import sys
from subprocess import Popen
num_of_args = len(sys.argv)
binary_file = sys.argv[1]
#| awk -F'[:]' '{print $2}' | awk -F'[ ]' '{print $1}' | tr -d '[[:space:]]'
proc = subprocess.Popen(['arm-linux-gnueabi-objdump','-d',binary_file], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
line = proc.stdout.readline()
if line != '':
array = line.rstrip().split(':')
if len(array) > 1:
if array[1]:
array2 = array[1].split(' ')
array2 = array2[0].lstrip().rstrip()
if array2:
sc_part = '"'
sc_part += '\\x'
sc_part += '\\x'.join(a+b for a,b in zip(array2[::2], array2[1::2]))
sc_part += '"'
print sc_part
else:
break
答案 0 :(得分:1)
使用python发行版附带的2to3工具。其用法的一个例子是:
foo.py
def foo:
for i in xrange(5):
print i,
foo()
在命令行中,您将输入:
$ 2to3 -w foo.py
foo.py
(后命令):
def foo():
for i in range(5):
print(i, end=' ')
foo()
在代码上运行2to3
,只显示打印需求发生变化:print(sc_part)
答案 1 :(得分:0)
print(sc_part)
可能是您唯一需要改变的地方。
答案 2 :(得分:0)