from scapy.all import *
from scapy.all import DHCP , Ether ,IP , BOOTP ,UDP
def detect_dhcp(pkt):
if DHCP in pkt:
if pkt[DHCP].options[0][1]==2:
Ether_Request = Ether(src = pkt[Ether].dst,dst = "ff:ff:ff:ff:ff:ff")
IP_Request = IP(src = "0.0.0.0" , dst="255.255.255.255")
UDP_Request = UDP(sport = 68 ,dport =67)
BOOTP_Request = BOOTP(chaddr=pkt[BOOTP].chaddr , xid = pkt[BOOTP].xid)
DHCP_Request = DHCP(options=[("message-type", 'request') , ("server_id" , pkt[DHCP].options[1][1]) , ("requested_addr" , pkt[BOOTP].yiaddr) , "end"])
Request = Ether_Request /IP_Request / UDP_Request / BOOTP_Request / DHCP_Request
sendp(Request , iface = '以太网')
print(pkt[BOOTP].yiaddr + "正在分配")
if (pkt[DHCP].options[0][1]==5):
print(pkt[BOOTP].yiaddr + "已经分配")
sniff(filter = "src port 67" , iface ='以太网' , prn = detect_dhcp , count =10)