Передать аргументы в метод Scapy Automaton.run () - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь создать автомат для анализа различных пакетов с помощью класса Scapy Automaton.

Для этого мне нужно иметь возможность передать пакет в качестве аргумента автомату.Один из способов сделать это - передать пакет при создании автомата:

my_automaton = MyAutomaton(packet)

Этот аргумент будет обработан функцией parse_args, перегруженной в коде автомата:

class MyAutomaton(Automaton):
  def parse_args(self, pkt, **kargs):
    Automaton.parse_args(self, **kargs)
    self.pkt = pkt
  ... REST OF CLASS ...

Это хорошо работает, если я создаю новый автомат для каждого входящего пакета.

Но я бы хотел создать только один автомат и запустить его с разными пакетами.Что-то вроде:

my_automaton = MyAutomaton()
my_automaton.run(pkt1)
my_automaton.run(pkt2)

Согласно документации это должно быть возможно ( ссылка ):

The parse_args() method is called with arguments given at __init__() and run(). Use that to parametrize the behaviour of your automaton.

И при печати на консоль при методе parse_argsназывается, я проверил, что он действительно вызывается при создании автомата и когда вызывается метод run.

Но, похоже, я не могу передать какой-либо аргумент через функцию run.Я здесь скучаю?

1 Ответ

0 голосов
/ 04 февраля 2019

Как показано в документе, вам нужно передать аргументы при инициализации автомата:

>>> TFTP_read("my_file", "192.168.1.128").run()

В вашем случае это будет

my_automaton = MyAutomaton(pkt1)
my_automaton.run()
my_automaton2 = MyAutomaton(pkt2)
my_automaton2.run()
...