如何从python回显十六进制

时间:2019-01-08 02:30:41

标签: python

运行此代码时,我得到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的代码,则代码可以正常工作

2 个答案:

答案 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)