此问题与this other one
有关我想在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()
我怎样才能找到(在我的计算方法中)foo1有什么价值?我认为这不是一个非常难的问题,但我无法弄清楚我在这里缺少的东西:/如果你能帮我一把,那会很酷:)
最诚挚的问候
答案 0 :(得分:0)
从命令行(或在声明Scapy图层的代码中)访问Scapy图层和字段,如下所示:
>>> a=Foo()
>>> a[Foo].foo1 = 0x23
这是否回答了你的问题?如果没有,请解释你的compute()函数的确切目的是什么,我将编辑这个答案。