2011-07-15 7 views
2

この質問はthis other oneScapyは

私はscapyでフィールドの値をチェックしたいと関連して、フィールドの実際の値を取得:

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="") 

コードがentirly動作していないが、しかし、重要な部分があります。出力は次のとおりです。

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

さて、私はコマンドライン上の値を変更するときに問題がある:

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

どのように見つけることができます(私の計算方法で)どのような値foo1のが持っていますか?私は、これは本当に難しい問題ではないと思いますが、私はここに欠けているかを把握することはできません:あなたは私の手を与えることができれば/がクールになる:)

コマンドラインから、よろしく

答えて

0

で(またはあなたがScapy層を宣言するコード内)あなたがそうのようなScapy層とフィールドにアクセス:

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

これは、あなたの質問にお答えしていますか?そうでなければ、あなたのcompute()関数の目的が何であるかを説明し、私はこの答えを編集します。

関連する問題