【发布时间】:2020-05-21 20:47:02
【问题描述】:
我在 Scapy 中创建了一个自定义层,表示数据包的 Little Endian 格式。
class test_layer(Packet):
name = "test"
fields_desc = [
BitField('A', 0, size=10),
BitField('B', 0, size=6),
BitField('C', 0, size=11),
BitField('D', 0, size=5)
]
我创建一个新数据包
pkt = test_layer(A=1021, B=33, C=816, D=3)
导致FF 61 66 03的十六进制转储
在发送数据包之前,我需要进行 16 位 Big Endian 交换,所以我最终得到 61 FF 03 66。
由于层(10、6、11、5)中字段的奇数位大小,我不能只是重新排序字段。例如,如果我将 A、B、C、D 重新排序为 B、A、D、C,则十六进制为 87 FD 1B 30。
对如何实现这一点有什么建议吗?
谢谢
【问题讨论】: