2

这个问题与另一个有关

我想检查 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="")

代码并没有完全正常工作,但重要的部分是。输出是:

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

现在,问题是当我在命令行上更改一个值时:

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

我怎样才能找出(在我的计算方法中) foo1 有什么价值?我认为这并不是一个真正困难的问题,但我无法弄清楚我在这里缺少什么:/如果你能帮我一把会很酷:)

最诚挚的问候

4

1 回答 1

0

从命令行(或在您声明 Scapy 层的代码中)您可以访问 Scapy 层和如下字段:

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

这回答了你的问题了吗?如果不是,请解释您的 compute() 函数的确切目的是什么,我将编辑此答案。

于 2012-05-17T14:19:38.280 回答