【发布时间】:2021-07-06 09:31:40
【问题描述】:
我将原始字节转换为如下所示的 scapy Ether 实例:
scapy_packet = Ether(data)
现在我想得到这个帧的源mac地址作为字节。
所以假设源mac地址是01:02:03:04:05:06,我想要和bytes((0x01, 0x02, 0x03, 0x04, 0x05, 0x06))创建的对象一样。
我该怎么办?我觉得应该有一个简单的方法来做到这一点。我显然不想将 mac 地址字符串转换回字节对象,因为我基本上将字节转换为字符串只是为了将其转换回字节。
是的,我知道我可以用原始字节做data[6:12],但我也希望这种方法用于其他的东西,比如位置不固定的 IP 地址。我想从 scapy 获取这个值。
我使用的是 Python 3.9.5。
到目前为止,以下事情没有成功:
bytes(scapy_packet.src) -> TypeError: string argument without an encoding
scapy_packet[Ether].src.__bytes__() -> 'str' 对象没有属性 '__bytes__'
bytes(scapy_packet[Ether].src) -> TypeError: string argument without an encoding
scapy_packet.src.__bytes__() -> 'str' 对象没有属性 '__bytes__'
bytes(scapy_packet.get_field("src")) -> TypeError: cannot convert 'SourceMACField' object to bytes
scapy_packet.get_field("src").__bytes__() -> AttributeError: 'SourceMACField' 对象没有属性 '__bytes__'
【问题讨论】: