如何在 Scapy 中以字节数组形式检索数据包有效负载?

Che*_*ona 1 python scapy

我有一些代码尝试通过从数据包中获取字符串值(我相信它返回一个字节串作为字符串)来将数据包有效负载提取为字节数组。我怎样才能以字节数组的形式获取原始有效负载?

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 = ""
Run Code Online (Sandbox Code Playgroud)

当我打印 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 
Run Code Online (Sandbox Code Playgroud)

但似乎,这是一个字符串,而不是字节串,ad pdata[0] 返回'b'

我怎样才能得到“有效负载”作为bytesbytearray

Rez*_*nik 6

不要使用str()函数字节对象

改成str(p[TCP].payload)p[TCP].payload.decode()

或者如果您只想将其作为字节,则只需返回它p[TCP].payload本身

更新

bytes(p[TCP].payload)