2011-07-15 41 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()函數的目的是什麼,我將編輯這個答案。