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

2 投票
2 回答
1678 浏览
提问于 2025-04-18 09:23

我在尝试制作一个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 个回答

1

你可以在发现和请求的数据包中使用 param_req_list,供你参考。它的内容是 ("param_req_list", b'\x01\x1c\x02\x03\x0f\x06\x77\x0c\x2c\x2f\x1a\x79\x2a')

2

(这个回答是关于发现数据包的,不是请求数据包,因为我写的就是这个)

你可以这样创建DHCP数据帧:

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)

一旦你制作好了 etheripudpbootp 数据帧:

packet = ether/ip/udp/bootp/dhcp

撰写回答