Я пытаюсь создать автомат для анализа различных пакетов с помощью класса 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
.Я здесь скучаю?