[英]Change packet endianness in Scapy
我在 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。
关于如何实现这一点的任何建议?
谢谢
如果将大小设置为负值,则字段将采用低端顺序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.