Изменить порядковый номер пакета в Scapy - PullRequest
0 голосов
/ 06 февраля 2020

Я создал собственный слой в 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.

Любые предложения о том, как выполнить sh это?

Спасибо

1 Ответ

1 голос
/ 06 февраля 2020

Если вы установите размер к отрицательному значению, поля будут иметь младший порядок

...