2

この質問はこの他の質問に関連しています

scapy で Field の値を確認したい:

def compute(fields):
    print fields
    print fields[1].name
    print fields[1].size
    print fields[1].default
    return 23


class Foo(Packet):
    array=[ 
           BitField("foo",0x0,2),
           BitField("foo1",0x0,2),
           BitField("bar",0x0,2),
           BitField("blub",None,2)
           ]


    def post_build(self, p, pay):
          print dir(self.array[1])
          res = compute(self.array)
          p = struct.pack(">b", res)
          return p

if __name__ == "__main__":
     interact(mydict=globals(), mybanner="")

コードは完全には機能していませんが、重要な部分は機能しています。出力は次のとおりです。

[<Field ().foo>, <Field ().foo1>, <Field ().bar>, <Field ().blub>]
foo1
2
0

さて、問題はコマンドラインで値を変更するときです:

>>> a=Foo()
>>> a.foo1=0x23
>>> a.show2()

(compute メソッドで) foo1 の値を調べるにはどうすればよいですか? これは本当に難しい質問ではないと思いますが、ここで何が欠けているのかわかりません。

敬具

4

1 に答える 1

0

コマンドライン (または Scapy レイヤーを宣言するコード) から、次のように Scapy レイヤーとフィールドにアクセスします。

>>> a=Foo()
>>> a[Foo].foo1 = 0x23

これはあなたの質問に答えていますか?そうでない場合は、compute() 関数の正確な目的を説明してください。この回答を編集します。

于 2012-05-17T14:19:38.280 に答える