Scapy 中的位域

Bitfields in Scapy

我创建了一个新的数据包类型:

class goober(Packet):
    fields_desc=[
        Bitfield("alpha",5,3),
        ByteField("bravo",100),
        Bitfield("charlie",3,0)
    ]

这会在发送时引发错误。 但是当我按如下方式重新排序时,它起作用了:

class goober(Packet):
    fields_desc=[
        Bitfield("alpha",5,3),
        Bitfield("charlie",3,0),
        ByteField("bravo",100),
    ]

问题是,我真的需要第一个表格。任何人都可以建议这样做的方法吗?你能举个例子吗?

您必须继续使用 BitField,直到您成为 8 的倍数。

class goober(Packet):
    fields_desc=[
        BitField("alpha",0,3),
        BitField("bravo",100, 8),
        BitField("charlie",0,5)
    ]