运行此代码时,我得到TypeError: must be string without null bytes, not str
。我想回显十六进制代码
#!/usr/bin/python
import os
test = '\x76\x06\x40\x00'
cmd = "echo '"+test+"'"
os.system(cmd)
我在python中尝试了诸如-e和r的各种回显标志,但最终只是回显\x76\x06\x40\x00
而不是实际字符。
如果我将\x00
(空)更改为类似\x0A
的代码,则代码可以正常工作
答案 0 :(得分:1)
为什么需要回声?您可以从python程序中进行打印,然后|另一个命令
$ cat x.py
#!/usr/bin/python
import os
print '0x10'
print '0x20'
$ ./x.py | wc -l
2
或者我可能没收到问题?
答案 1 :(得分:0)
您可以使用模块binascii( https://docs.python.org/2/library/binascii.html)
#!/usr/bin/python
import binascii
test = '\x76\x06\x40\x00'
print( "%s\n" % binascii.hexlify(test) )
带有shell调用的版本
#!/usr/bin/python
import binascii
import os
test = '\x76\x06\x40\x00'
print( "from python:%s\n" % binascii.hexlify(test) )
cmd = "echo 'from shell:"+("%s\n" % binascii.hexlify(test))+"'"
os.system(cmd)