【问题标题】:Change packet endianness in Scapy在 Scapy 中更改数据包字节序
【发布时间】: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。

对如何实现这一点有什么建议吗?

谢谢

【问题讨论】:

    标签: python scapy packet


    【解决方案1】:

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

    【讨论】:

    • 再次感谢您的输入。我尝试将大小设置为负数,例如 BitField('A', 0, size=-10)... 但我得到了相同的结果。
    猜你喜欢
    • 1970-01-01
    • 2017-02-07
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多