from scapy.all import * import binascii import random iface = "wlan1" routerMAC = "d4:6c:6d:3e:a4:13" routerIP = "10.0.0.1" requestedIP = "10.0.0.200" zeroIP = "0.0.0.0" fullIP = "255.255.255.255" broadcastMAC = "ff:ff:ff:ff:ff:ff" ifaceMAC = get_if_hwaddr(iface) myMAC = '54:3f:19:c9:38:6d' serverID = "10.0.0.1" def mac_to_bytes(mac_addr: str) -> bytes: return binascii.unhexlify(mac_addr.replace(':', '')) # macParts = mac_addr.split(':') # i = 0 # intParts = [] # while i < len(macParts): # intParts[i] = macParts[i] # i += 1 # # return ''.join('{:02X}'.format(a) for a in intParts) # for macPart in macParts: # part = int(macPart) # hex = '{:02X}'.format(part) sourceMAC = mac_to_bytes(myMAC) addr1 = '01:01:01:01:01:01' addr2 = '02:02:02:02:02:02' src = '3.3.3.3' dst = '4.4.4.4' chaddr = "\x05\x05\x05\x05\x05\x05"; requestedIP = '6.6.6.6' server_id = '7.7.7.7' explori = RadioTap() \ /Dot11(type=2, subtype=0, addr1=addr1, addr2=addr2, addr3=addr1) \ /IP(src=src, dst=dst) \ /UDP(dport=68, sport=67) \ /BOOTP(chaddr=chaddr, xid=RandInt()) \ /DHCP(options=[ ("message-type", "request"), ("requested_addr", requestedIP), ("server_id", server_id), "end"]) requestedIP = '10.0.0.253' # dhcpRequest = Dot11( # addr1=broadcastMAC, # addr2=ifaceMAC, # addr3=broadcastMAC) dhcpRequest = Ether(src=ifaceMAC, dst=broadcastMAC) dhcpRequest /= IP(src=zeroIP, dst=fullIP) dhcpRequest /= UDP(dport=67, sport=68) dhcpRequest /= BOOTP( chaddr=mac_to_bytes(ifaceMAC), xid=RandInt() ) dhcpRequest /= DHCP( options=[ ("message-type", "request"), ("requested_addr", requestedIP), ("server_id", serverID), "end", ] ) r = raw(dhcpRequest) b = bytes(dhcpRequest) print(f"Settings:\n\tSrc MAC: {ifaceMAC}\n\tDst MAC: {broadcastMAC}\n\tSrc IP: {zeroIP}\n\tDst IP: {fullIP}\n\tRequested IP: {requestedIP}\n\tServer ID: {serverID}\n") print("Bytes:") print(b) print("\nHexdump:") hexdump(b) print("\nls:") ls(dhcpRequest) ans,unans = sr(dhcpRequest) ans.summary() # ls(explori) # sendp(dhcpRequest, iface=iface, loop=True) # /BOOTP(chaddr=RandString(12, b"0123456789abcdef"), xid=RandInt()) \ # /BOOTP(sourceMAC, xid=random.randint(1, 2**32-1)) \