首页 > 解决方案 > 在 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。

关于如何做到这一点的任何建议?

谢谢

标签: pythonscapypacket

解决方案


如果将大小设置为负值,则字段将为低端


推荐阅读