如何获取 packet.tcp.payload 和 packet.http.data 作为字符串?

问题描述

这些属性的返回值是用':'分隔的十六进制格式 例如:70:79:f6:2e:类似这样的东西。 当我尝试将其解码为纯字符串(人类可读)时,它不起作用。正在使用什么编码?我尝试了各种不同的方法,如 codecs.decode()、binascii.unhexlify()、bytes.fromhex() 以及不同的编码 ASCII 和 UTF-8。没有任何效果,任何帮助表示赞赏。我正在使用 python 3.6

解决方法

感谢您的提问!我相信您想以两个十六进制位置的块读取有效负载。您尝试的函数无法立即解析 : 分隔符。像用 : 分隔符分割字符串、将它们的值转换为人类可读的字符以及将“列表”加入字符串之类的事情应该可以解决问题。

hex_string = '70:79:f6:2e'

hex_split = hex_string.split(':')
hex_as_chars = map(lambda hex: chr(int(hex,16)),hex_split)

human_readable = ''.join(hex_as_chars)
print(human_readable)

这是你的想法吗?