Skip to content
Advertisement

How can I add a parameter request list in DHCP header with Scapy?

I try to make a DHCP pachet with parameter request list option and to add three parameters in that request.

This is what i done but the pachet I see on Wireshark look`s to be malformed:

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"])

I also try to pass the parametes as a list of codes of the parameters i want to be included in the request list, but still the packet is malformed.

Advertisement

Answer

(this answer deals with a discover packet, not a request packet, because that’s what I’m writing)

You can create the DHCP frame like this:

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

Once you’ve crafted the ether, ip, udp and bootp frames:

packet = ether/ip/udp/bootp/dhcp
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement