如何使用Scapy在DHCP标头中添加参数请求列表?

时间:2014-06-11 09:00:27

标签: python ethernet scapy

我尝试使用参数请求列表选项创建DHCP包,并在该请求中添加三个参数。

这就是我所做的,但是我在Wireshark上看到的小袋看起来是不正确的:

dhcp_pkt = Ether(dst="ff:ff:ff:ff:ff:ff")/IP(src="0.0.0.0",dst="255.255.255.255")/UDP(sport=68,dport=67)/BOOTP(chaddr=MAC_SOURCE)/DHCP(options=[("message-type","request"),("param_req_list", "subnet_mask", "router", "domain"),"end"])

我还尝试将参数传递为我想要包含在请求列表中的参数代码列表,但数据包仍然格式错误。

2 个答案:

答案 0 :(得分:1)

您可以在发现和请求数据包中使用param_req_list,FYI (" param_req_list",B' \ X01 \ X1C \ X02 \ X03 \ X0F \ X06 \ X77 \ X0C \ X2C \ X2F \ X1A \ X79 \ X2A&#39)

答案 1 :(得分:1)

(这个答案处理的是发现数据包,而不是请求数据包,因为这就是我正在写的内容)

您可以像这样创建DHCP框架:

dhcp_options = [
    ("message-type", "discover"),
    ("param_req_list",
         chr(DHCPRevOptions["subnet_mask"][0]), # by name
         chr(DHCPRevOptions["router"][0]),
         chr(DHCPRevOptions["name_server"][0]),
         chr(15) # aka "domain name
    ),
    "end"
]
dhcp = DHCP(options=dhcp_options)

制定etheripudpbootp帧之后:

packet = ether/ip/udp/bootp/dhcp