プロトコルを作成しようとしていますが、理解に問題があります。レイヤーごとにクラスを作成しました。次に、レイヤーを上下に積み重ねることで、パケットを構築するいくつかのメソッドを作成しました。
パケットを作成するとき:
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")
ここで、「/」がこの場合の正しい演算子かどうかはわかりません。どうすればより良い方法でそれを行うことができますか? 私のプロトコルでは、レイヤーは独立しており、カプセル化されていません。