我有一些代码试图通过从数据包中获取字符串值来提取数据包有效载荷作为字节数组(我相信它会返回一个字节字符串作为字符串)。我如何才能将原始有效负载作为字节数组获取?
packets = rdpcap(pcapFile)
p = packets[0]
if TCP in p:
pdata = str(p[TCP].payload)
elif Raw in p:
pdata = str(p[Raw].load)
elif TLS in p:
pdata = str(p[TLS].msg)
else:
pdata = ""
当我打印pdata时,看起来像这样
b'\x17\x03\x01\x00 a\xb9j\x17#\xb9uX\xdf\xe3\x08\xe0\xbc\xc3\xce\xa2=\xda\xc9\xd7\x1d7*\xad\xc9Y\xcer1\xdc\xb2\xd1\x17\x03\x01\x00
但是看来,这是一个字符串,而不是字节字符串,广告pdata [0]返回'b'
如何以bytes
或bytearray
的形式获得“有效载荷”?
答案 0 :(得分:1)
请勿使用str()
个功能字节对象
将str(p[TCP].payload)
更改为p[TCP].payload.decode()
或者,如果您只想将其作为字节,则只需返回p[TCP].payload
即可
bytes(p[TCP].payload)