我正在尝试创建一个自动机来使用Scapy的自动机类解析不同的数据包。
为了做到这一点,我需要能够将包作为参数传递给自动机。这样做的一种方法是在创建自动机时传递数据包:
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)根据文档,这应该是可能的(link):
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函数传递任何参数,这里我遗漏了什么?
发布于 2019-02-05 01:04:37
如文档所示,您需要在初始化自动机时传递参数:
>>> TFTP_read("my_file", "192.168.1.128").run()在您的情况下,这将是
my_automaton = MyAutomaton(pkt1)
my_automaton.run()
my_automaton2 = MyAutomaton(pkt2)
my_automaton2.run()https://stackoverflow.com/questions/54502183
复制相似问题