Scapy获取字段的实际值

2 投票
1 回答
3665 浏览
提问于 2025-04-16 21:36

这个问题和另一个问题有关。

我想检查一下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()函数到底是干什么的,我会修改这个回答。

撰写回答