【问题标题】:scapy dhcp request with custom options带有自定义选项的 scapy dhcp 请求
【发布时间】:2017-01-09 21:52:19
【问题描述】:

如何使用 scapy 作为 dhcp 客户端来请求某些 DHCP 选项?客户端将请求他们需要的内容,dhcp 客户端应做出相应的响应。但是,我需要测试某些 DHCP 选项是否是从服务器发送的,而这些选项是我的 PC 通常不会请求的。这些可能是选项 150、242 等。

scapy 可以支持任何 DHCP 选项吗?在下面的代码中,如果我想请求选项 242 或选项 150,我该如何调整?

ethernet = Ether(dst='ff:ff:ff:ff:ff:ff',src=src_mac_address,type=0x800)
ip = IP(src ='0.0.0.0',dst='255.255.255.255')
udp =UDP (sport=68,dport=67)
bootp = BOOTP(chaddr = hw, ciaddr = '0.0.0.0',xid =  0x01020304,flags= 1)
dhcp = DHCP(options=[("message-type","discover"),"end"])

packet = ethernet / ip / udp / bootp / dhcp

【问题讨论】:

    标签: python scapy dhcp


    【解决方案1】:
    requested_option_1 = 1    # Subnet Mask
    requested_option_2 = 6    # Domain Name Servers
    requested_option_3 = 15   # Domain Name
    requested_option_4 = 44   # NetBIOS (TCP/IP) Name Servers
    requested_option_5 = 3    # Routers
    requested_option_6 = 33   # Static Routes
    requested_option_7 = 150  # TFTP Server address
    requested_option_8 = 43   # Vendor Specific Information
    
    bytes_requested_options = struct.pack("8B", requested_option_1,
                                                requested_option_2,
                                                requested_option_3,
                                                requested_option_4,
                                                requested_option_5,
                                                requested_option_6,
                                                requested_option_7,
                                                requested_option_8)
    dhcp = DHCP(options=[('message-type', 'discover'),('param_req_list',bytes_requested_options),'end'])
    

    【讨论】:

      【解决方案2】:

      只需将您的选项添加为整数数组,如下所示:

      dhcp = DHCP(options=[('message-type','discover'),
                           ('hostname',hostname),
                           ('param_req_list',
                           [1,3,6]),
                           ('end')])
      

      或者,为了使用 scapy 提供的选项:

      dhcp = DHCP(options=[('message-type','discover'),
                           ('hostname',hostname),
                           ('param_req_list',
                           [
                           int(scapy.all.DHCPRevOptions["subnet_mask"][0]),
                           int(scapy.all.DHCPRevOptions["router"][0]),
                           int(scapy.all.DHCPRevOptions["name_server"][0])
                           ]),
                           ('end')])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-02
        • 1970-01-01
        • 2018-02-12
        相关资源
        最近更新 更多