首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将参数传递给Scapy的Automaton.run()方法

将参数传递给Scapy的Automaton.run()方法
EN

Stack Overflow用户
提问于 2019-02-03 19:04:22
回答 1查看 176关注 0票数 0

我正在尝试创建一个自动机来使用Scapy的自动机类解析不同的数据包。

为了做到这一点,我需要能够将包作为参数传递给自动机。这样做的一种方法是在创建自动机时传递数据包:

代码语言:javascript
复制
my_automaton = MyAutomaton(packet)

此参数将由自动机代码中重载的parse_args函数处理:

代码语言:javascript
复制
class MyAutomaton(Automaton):
  def parse_args(self, pkt, **kargs):
    Automaton.parse_args(self, **kargs)
    self.pkt = pkt
  ... REST OF CLASS ...

如果我为每个传入的数据包创建一个新的自动机,这会很好地工作。

但我只想创建一个自动机,并用不同的包运行它。类似于:

代码语言:javascript
复制
my_automaton = MyAutomaton()
my_automaton.run(pkt1)
my_automaton.run(pkt2)

根据文档,这应该是可能的(link):

代码语言:javascript
复制
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函数传递任何参数,这里我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-05 01:04:37

如文档所示,您需要在初始化自动机时传递参数:

代码语言:javascript
复制
>>> TFTP_read("my_file", "192.168.1.128").run()

在您的情况下,这将是

代码语言:javascript
复制
my_automaton = MyAutomaton(pkt1)
my_automaton.run()
my_automaton2 = MyAutomaton(pkt2)
my_automaton2.run()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54502183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档