Я пытаюсь создать протокол, и у меня есть некоторые проблемы с пониманием.Я создал класс для каждого слоя.Затем я создал несколько методов, которые создают пакеты для меня, складывая слои один над другим.
Когда я создаю пакет:
a=Foo()/Bar() (or a=test())
, я получаю что-то вроде:
<Foo | <Bar |>>
, на мой взгляд, это означает, что пакеты инкапсулированы (как, например, IP()/ICMP()
, где это имеет смысл).Теперь моя проблема в том, что я хочу получить что-то более похожее на:
<Foo |> <Bar |>
что я делаю не так?Ниже следует код, который я использую (упрощенная версия):
#!/usr/bin/env python
import logging
logging.getLogger("scapy").setLevel(1)
from scapy.all import *
class Foo(Packet):
name = "Foo packet"
fields_desc = [
ByteField("foo1", 0x23)
]
class Bar(Packet):
name = "Bar packet"
fields_desc = [
ByteField("bar1", 0x42)
]
def test():
a=Foo()
b=Bar()
return a/b
if __name__ == "__main__":
interact(mydict=globals(), mybanner="test-env")
Теперь я не уверен, является ли "/" правильным оператором для этого случая.Как бы я сделал это лучше?В моем протоколе слои независимы и не инкапсулированы.