Scapy BitField 和 type() 的问题

0 投票
2 回答
2652 浏览
提问于 2025-04-16 21:30

我正在为scapy写一个插件,遇到了一个问题。我需要稍微修改一下原来的scapy代码(每个类都继承自对象)。修改后的代码可以在这里找到:http://pastebin.com/pjcL1KJv

我写的代码如下:

class Foo():
   array=[ BitField("foo",0x0,2),
           BitField("foo1",0x0,2),
           BitField("bar",0x0,2),
           BitField("blub",None,2)
 ]
def returnArr(a):  
      for i in a.array:
           print type(i.default)


if __name__ == "__main__":
    a=Foo()
    a.blub=0x23
    returnArr(a)

输出结果:

<type 'int'>

<type 'int'>

<type 'int'>

<type 'NoneType'>

我的问题是:能否检测到BitField("foo",0x0,2)的第二个参数是0x0还是其他值?如果可以,我该怎么做?如果不行,为什么呢?

2 个回答

0

试试在 BitField 实例中使用 .default 属性。

1

第二个参数叫做 default,它被存储为一个属性,属性的名字也是 default。

b = BitField("foo",0x0,2)
b.default   # 0

撰写回答