所以,在python中,当我尝试执行以下代码时。
from subprocess import *
args = "A"*99
args = list(args)
args[ord('A')] = "\x00"
args[ord('B')] = "\x20\x0a\x0d"
proc= Popen(["./input2"]+args,stdin=PIPE,stderr=STDOUT)
我得到了
TypeError:execv()arg 2必须只包含字符串
所以我做了一些研究并意识到如果Popen()
中有任何整数格式化的参数,它会给我错误。但我不知道哪个参数可能是整数。
仅供参考:如果我发表评论
args[ord('A')] = "\x00"
args[ord('B')] = "\x20\x0a\x0d"
此代码,根本不会出现错误。
答案 0 :(得分:2)
这更适合作为评论,但我还没有足够的代表。我正在经历这一挑战并遇到了确切的问题。事实证明,您只需执行args[ord('A')] = ""
即可避免此错误。
答案 1 :(得分:0)
Popen
的参数可能不包含NUL字符\x00
。
例如,这有效:
Popen(["/bin/echo", "Hello"])
但这不是:
Popen(["/bin/echo", "Hello\x00"])