Я пытаюсь реализовать DHCP-сервер в scapy. Я обнюхиваю с помощью iface="Подключение по локальной сети 3" для udp sport 67 и dport 68 для обнаружения DHCP, а затем отправляю предложение DHCP с помощью команды sendp. Я не вижу в Wireshark свой пакет, и DHCP Clinet тоже не получает, он продолжает отправлять DHCP Discovers.
На wirehark я вижу только обнаружение DHCP от клиента.
Вот код:
def sniff_DHCP_discovers():
sniff(filter='port 67 or port 68', prn=startThread, iface="Local Area Connection 3")
def startThread(pkt):
thread = threading.Thread(target=process_DHCP_discover, args=(pkt,))
thread.deamon = True
thread.start()
def process_DHCP_discover(pkt):
print 'Process ', ls(pkt)
if DHCP in pkt:
if pkt[DHCP].options[0][1]==1:
print '\tDetected DHCP Discover from client: ', pkt[Ether].src
#Create DHCP Offer
Ethernet = Ether(src="00:50:B6:0E:FE:36", dst=pkt[Ether].src)
IPo = IP(src="192.168.0.100", dst="255.255.255.255")
UDPo = UDP(sport=67, dport=68)
BOOTPo = BOOTP(op=2, yiaddr="192.168.0.1", siaddr="192.168.0.100", giaddr='0.0.0.0', xid=pkt[BOOTP].xid)
DHCPo = DHCP(options=[('message-type', 'offer'),('subnet_mask',IPv4_ConfigParam.SUBNET_MASK),('server_id', "192.168.0.100"), ('lease_time', 1800),('end')])
pkt_Offer = Ethernet/IPo/UDPo/BOOTPo/DHCPo
sendp(pkt_Offer, iface="Local Area Connection 3")
print 'DHCP Offer sent: ', ls(pkt_Offer)