send DHCP Discover
send.py
from scapy.all import Ether, IP, UDP, BOOTP, DHCP, sendp, RandMAC
for _ in range(5):
mac = str(RandMAC())
chaddr = "".join([chr(int(x, 16)) for x in mac.split(":")])
discover = (
Ether(dst="ff:ff:ff:ff:ff:ff", src=mac, type=0x0800)
/ IP(src="0.0.0.0", dst="255.255.255.255")
/ UDP(dport=67, sport=68)
/ BOOTP(op=1, chaddr=chaddr)
/ DHCP(options=[("message-type", "discover"), ("end")])
)
sendp(discover, verbose=0)
recieve DHCP Offer
recv.py
from scapy.all import sniff
def on_dhcp_offer(packet):
print(packet.summary())
sniff(prn=on_dhcp_offer, filter="udp src port 67", store=0)
filterはBPF syntax。詳細こちら