您好我有python嗅探器
def receiveData(s):
data = ''
try:
data = s.recvfrom(65565)
#k = data.rstrip()
except timeout:
data = ''
except:
print "An Error Occurred."
sys.exc_info()
return data[0]
data = receiveData(s)
是套接字。我得到数据,但它包含符号,请帮助我有人如何将其转换为纯文本
我是Python的新手,如果它非常愚蠢的问题抱歉:)
这是数据示例E\x00\x00)\x1a*@\x00\x80\x06L\xfd\xc0\xa8\x01\x84\xad\xc2#\xb9M\xb8\x00P\xed\xb3\x19\xd9\xedY\xc1\xfbP\x10\x01\x04\x16=\x00\x00\x00'
答案 0 :(得分:1)
您无法将其真正转换为“纯文本”。无法显示NUL(ASCII 0,显示为\x00
)等字符,因此python会以十六进制表示形式显示它们。
大多数嗅探/ hexdump工具的作用是用例如替换不可打印的字符。一个点。你可以这样做:
import string
printable = set(string.printable)
print ''.join(x if x in printable else '.' for x in data)
示例:
>>> data = 'E\x00\x00)\x1a*@\x00\x80\x06L\xfd\xc0\xa8\x01\x84\xad\xc2#\xb9M\xb8\x00P\xed\xb3\x19\xd9\xedY\xc1\xfbP\x10\x01\x04\x16=\x00\x00\x00'
>>> print ''.join(x if x in printable else '.' for x in data)
E..).*@...L.......#.M..P.....Y..P....=...
答案 1 :(得分:0)
转换为“纯文本”取决于您的数据的含义。
你有压缩文字吗?然后解压缩它。
你有编码的数字吗?然后解码并显示数字。
如果不知道数据的语义,没有人能告诉你。
当然,您只需使用print data.encode("hex")
显示原始数据,但我不确定这是否是您想要的。