【问题标题】:Read DHCP options with Scapy使用 Scapy 读取 DHCP 选项
【发布时间】:2021-09-09 12:39:51
【问题描述】:

使用 Scapy,我可以发送 DHCP Discover 并接收 DHCP Offer:

dhcp_discover = Ether(...) / IP(...) / UDP(...) / BOOTP(...) / DHCP(...)
dhcp_offer = srp1(dhcp_discover, iface="eno1", timeout=1)

目前,我读到的选项值如下:

dhcp_offer.getLayer(DHCP).fields["options"]

这给了我这样的东西:

[('message-type', 2), ('server_id', '192.168.0.1'), ('lease_time', '600), ...]

它可以工作,但不是很方便!

我确信有一个更好的解决方案,例如只读取选项 'server_id' 的值并避免解析元组列表。该文档对这种情况不是很有帮助。

你知道怎么做吗?

【问题讨论】:

    标签: scapy dhcp


    【解决方案1】:

    我不确定 scapy 是否提供了一种更“方便”的方式来访问选项,但您可以从这个元组列表构造一个字典,然后通过提供选项名称作为键轻松访问选项值:

    opts = [('message-type', 2), ('server_id', '192.168.0.1'), ('lease_time', 600)]
    opts_as_dict = dict(opts)
    print(opts_as_dict['lease_time'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-20
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多