我已经在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。
关于如何实现此目标的任何建议?
谢谢
我已经在Scapy中创建了一个自定义层,该层代表数据包的Little Endian格式。 class test_layer(Packet):name =“ test” fields_desc = [BitField('A',0,size = 10),...
如果将大小设置为负值,则字段将为低位序