Scapy получить фактическое значение поля - PullRequest
2 голосов
/ 15 июля 2011

этот вопрос относится к этому другому

Я хотел бы проверить значение поля в 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 голосов
/ 17 мая 2012

Из командной строки (или в коде, где вы объявляете слой Scapy) вы получаете доступ к слою Scapy и полю, например:

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

Это отвечает на ваш вопрос?Если нет, объясните, для чего именно предназначена ваша функция compute (), и я отредактирую этот ответ.

...