我尝试使用参数请求列表选项创建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"])
我还尝试将参数传递为我想要包含在请求列表中的参数代码列表,但数据包仍然格式错误。
答案 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)
制定ether
,ip
,udp
和bootp
帧之后:
packet = ether/ip/udp/bootp/dhcp