我尝试制作一个带有参数请求列表选项的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"])
我也尝试将参数作为我想要包含在请求列表中的参数的代码列表传递,但仍然数据包是畸形的。
(这个答案处理的是一个发现包,而不是请求包,因为这就是我写的)
你可以像这样创建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)
一旦你制作了ether
, ip
, udp
和bootp
帧:
packet = ether/ip/udp/bootp/dhcp
您可以在发现和请求数据包中使用param_req_list,供您参考("param_req_list",b ' x01 x1c x02 x03 x0f x06 x77 x0c x2c x2f x1a x79 x2a")