Странная полезная нагрузка при создании необработанного пакета с помощью Scappy

У меня возникла странная проблема при попытке сгенерировать необработанный пакет с помощью Scappy.

Я делаю следующее:

eee=Ether(dst='08:00:11:11:11', src='08:00:11:11:22:22', type=0x888)/Raw(load='112233445566778888776655443322110901')

Но когда я делаю шестнадцатеричный дамп только что созданного пакета:

hexdump(eee)
0000   08 00 11 11 11 00 08 00  11 11 22 22 08 88 **31 31**   ..........""..11
0010   **32 32** 33 33 34 34 35 35  36 36 37 37 38 38 38 38   2233445566778888
0020   37 37 36 36 35 35 34 34  33 33 32 32 31 31 30 39   7766554433221109
0030   30 31

Похоже, он добавляет 3 к шестнадцатеричной версии полезной нагрузки. Я действительно не знаю, откуда появляется эта цифра 3.

Заранее спасибо за любую подсказку.


person Sergio Gutiérrez    schedule 17.06.2015    source источник


Ответы (1)


Слой Raw принимает двоичное представление аргумента load. Поскольку значение ascii символа 1 равно 0x31, а значение ascii символа 2 равно 0x32, двоичное представление строки 1122 равно 0x31313232. Это то, что вы видите как вывод hexdump.

Что вам нужно сделать, так это декодировать строку перед передачей ее в качестве аргумента load на уровень Raw:

In [1]: from scapy.all import *
WARNING: No route found for IPv6 destination :: (no default route?)

In [2]: eee=Ether(dst='08:00:11:11:11', src='08:00:11:11:22:22', type=0x888)/Raw(load='112233445566778888776655443322110901'.decode("HEX"))

In [3]: hexdump(eee)
0000   08 00 11 11 11 00 08 00  11 11 22 22 08 88 11 22   ..........""..."
0010   33 44 55 66 77 88 88 77  66 55 44 33 22 11 09 01   3DUfw..wfUD3"...
person Yoel    schedule 18.06.2015