def build_msg(opts): conf.checkIPaddr = False msg_flag = 0 import sys if sys.platform != "darwin": fam, hw = get_if_raw_hwaddr(str(world.cfg["iface"])) else: # TODO fix this for MAC OS, this is temporary quick fix just for my local system hw = convert_MAC("0a:00:27:00:00:00") tmp_hw = None # we need to choose if we want to use chaddr, or client id. # also we can include both: client_id and chaddr if world.cfg["values"]["chaddr"] is None or world.cfg["values"][ "chaddr"] == "default": tmp_hw = hw elif world.cfg["values"]["chaddr"] == "empty": tmp_hw = convert_MAC("00:00:00:00:00:00") else: tmp_hw = convert_MAC(world.cfg["values"]["chaddr"]) if world.cfg["values"]["broadcastBit"]: # value for setting 1000 0000 0000 0000 in bootp message in field 'flags' for broadcast msg. msg_flag = 32768 else: msg_flag = 0 msg = Ether(dst="ff:ff:ff:ff:ff:ff", src=hw) msg /= IP( src=world.cfg["source_IP"], dst=world.cfg["destination_IP"], ) msg /= UDP(sport=world.cfg["source_port"], dport=world.cfg["destination_port"]) msg /= BOOTP(chaddr=tmp_hw, giaddr=world.cfg["values"]["giaddr"], flags=msg_flag, hops=world.cfg["values"]["hops"]) # BOOTP requests can be optionless if len(opts) > 0: opts += ["end"] # end option msg /= DHCP(options=opts) #transaction id if world.cfg["values"]["tr_id"] is None: msg.xid = randint(0, 256 * 256 * 256) else: msg.xid = int(world.cfg["values"]["tr_id"]) world.cfg["values"]["tr_id"] = msg.xid msg.siaddr = world.cfg["values"]["siaddr"] msg.ciaddr = world.cfg["values"]["ciaddr"] msg.yiaddr = world.cfg["values"]["yiaddr"] msg.htype = world.cfg["values"]["htype"] return msg
def build_msg(opts): conf.checkIPaddr = False msg_flag = 0 import sys if sys.platform != "darwin": fam, hw = get_if_raw_hwaddr(str(world.cfg["iface"])) else: # TODO fix this for MAC OS, this is temporary quick fix just for my local system hw = convert_MAC("0a:00:27:00:00:00") tmp_hw = None # we need to choose if we want to use chaddr, or client id. # also we can include both: client_id and chaddr if world.cfg["values"]["chaddr"] is None or world.cfg["values"]["chaddr"] == "default": tmp_hw = hw elif world.cfg["values"]["chaddr"] == "empty": tmp_hw = convert_MAC("00:00:00:00:00:00") else: tmp_hw = convert_MAC(world.cfg["values"]["chaddr"]) if world.cfg["values"]["broadcastBit"]: # value for setting 1000 0000 0000 0000 in bootp message in field 'flags' for broadcast msg. msg_flag = 32768 else: msg_flag = 0 msg = Ether(dst="ff:ff:ff:ff:ff:ff", src=hw) msg /= IP(src=world.cfg["source_IP"], dst=world.cfg["destination_IP"],) msg /= UDP(sport=world.cfg["source_port"], dport=world.cfg["destination_port"]) msg /= BOOTP(chaddr=tmp_hw, giaddr=world.cfg["values"]["giaddr"], flags=msg_flag, hops=world.cfg["values"]["hops"]) # BOOTP requests can be optionless if len(opts) > 0: opts += ["end"] # end option msg /= DHCP(options=opts) #transaction id if world.cfg["values"]["tr_id"] is None: msg.xid = randint(0, 256*256*256) else: msg.xid = int(world.cfg["values"]["tr_id"]) world.cfg["values"]["tr_id"] = msg.xid msg.siaddr = world.cfg["values"]["siaddr"] msg.ciaddr = world.cfg["values"]["ciaddr"] msg.yiaddr = world.cfg["values"]["yiaddr"] msg.htype = world.cfg["values"]["htype"] return msg
def build_msg(opts): conf.checkIPaddr = False msg_flag = 0 fam, hw = get_if_raw_hwaddr(str(world.cfg["iface"])) tmp_hw = None # we need to choose if we want to use chaddr, or client id. # also we can include both: client_id and chaddr if world.cfg["values"]["chaddr"] is None or world.cfg["values"]["chaddr"] == "default": tmp_hw = hw elif world.cfg["values"]["chaddr"] == "empty": tmp_hw = convert_MAC("00:00:00:00:00:00") else: tmp_hw = convert_MAC(world.cfg["values"]["chaddr"]) if world.cfg["values"]["broadcastBit"]: # value for setting 1000 0000 0000 0000 in bootp message in field 'flags' for broadcast msg. msg_flag = 32768 msg = Ether(dst = "ff:ff:ff:ff:ff:ff", src = hw) msg /= IP(src = world.cfg["source_IP"], dst = world.cfg["destination_IP"],) msg /= UDP(sport = world.cfg["source_port"], dport = world.cfg["destination_port"]) msg /= BOOTP(chaddr = tmp_hw, giaddr = world.cfg["values"]["giaddr"], flags = msg_flag, hops = world.cfg["values"]["hops"]) # BOOTP requests can be optionless if (len(opts) > 0): opts += ["end"] # end option msg /= DHCP(options = opts) msg.xid = randint(0, 256*256*256) msg.siaddr = world.cfg["values"]["siaddr"] msg.ciaddr = world.cfg["values"]["ciaddr"] msg.yiaddr = world.cfg["values"]["yiaddr"] return msg