TypeError:必须是不带空字节的字符串,而不是os.system()中的str
我正在尝试编写一个使用下面的代码执行C可执行文件的python代码
os.system("./a.out "%s"" % payload)
其中./a.out是一个C可执行文件,有效载荷是作为命令行参数给出的一个字符串(不含空格)。 (链接是这个,我正在试着按照章节链接函数的例子)
现在我写了另一个C代码,但它需要3个命令行参数。 所以我的字符串应该是arg [1] +“”+ arg [2] +“”+ payloadString。 (c代码将arg [1]和arg [2]转换为整数以在其函数中使用它)。 这是我的Python代码的片段:
p = "10 " #arg[1]
p += "10 " #arg[2]
p += "string without spaces which I need as payload" #arg[3]
os.system("./a.out "%s"" % p)
其中./a.out是我的C代码的可执行文件,它需要3个命令行参数。 当我运行Python代码时,出现错误:
Traceback (most recent call last):
File "this_file.py", line XX, in <module>
os.system("./a.out "%s"" % p)
TypeError: must be string without null bytes, not str
谁能帮我?
PS我是python的新手。 类似的问题出现在堆栈溢出中,但我不确定如何使用他们的答案来解决我的问题。
把一个r
放在os.system
调用中。
os.system(r"./a.out "%s"" % p)
你为什么不使用呼叫来达到这个目的。 我想它会做的工作你可以在列表中提供参数例如:
from subprocess import call
call(["./a.out","10","10","string without spaces which I need as payload"])
在这里你的情况相当于
call(["./a.out",arg[0],arg[1],arg[2]])
我认为这应该工作
链接地址: http://www.djcxy.com/p/87213.html上一篇: TypeError: must be string without null bytes, not str in os.system()