Я создал собственный слой в 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 это?
Спасибо