Я использую python3 и nfqueue для изменения пакетов на лету.
Фон
Версия Scapy: 2.4.1
Python ' s NetfilterQueue ( PyPi ) имеет методы для преобразования пакетов в «scapy-совместимые» строки / байты и наоборот:
get_payload
, что возвращает совместимый со scapy string in python 2, BYTES in python 3.
set_payload
, который устанавливает полезную нагрузку пакета после того, как мы закончили со scapy.
Проблема
После того, как я использую get_payload
, я могу использовать метод IP()
scapy для приятного изменения разделов пакета. Однако, когда я закончу, у меня останется объект типа «IP», который я хочу преобразовать в тип «байты» (чтобы иметь возможность использовать set_payload
на нем).
Вывод кода при печати IP-адресов
(в данном случае 'nnnn' - это фактические данные пакетов)
running...
<class 'scapy.layers.inet.IP'>
b'E\x00\x008\x82\x00@\x00@\x06\xba\xbd\x7f\x00\x00\x01\x7f\x00\x00\x01\xeaj\x1f\x91(\x02\xb9\xffq\xa4\xd6\xbe\x80\x18\x02\x00\xf2W\x00\x00\x01\x01\x08\n\xa8b\x11*\xa8b\x11*nnnn'
b'nnnn'
Argument 'payload' has incorrect type (expected bytes, got IP)
Q
Как преобразовать тип scapy.layers.inet.IP
в введите "байты" в python3?