Scapy获取字段的实际值
这个问题和另一个问题有关。
我想检查一下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的值呢?我觉得这个问题其实不难,但我就是搞不清楚我缺少了什么 :/ 如果你能帮我一下,那就太好了 :)
最好的祝福
1 个回答
0
从命令行(或者在你声明一个Scapy层的代码里),你可以这样访问Scapy层和某个字段:
>>> a=Foo()
>>> a[Foo].foo1 = 0x23
这样回答你的问题了吗?如果没有,请解释一下你的compute()函数到底是干什么的,我会修改这个回答。