我嘗試在scapy中實現DHCP服務器。我用iface =「Local Area Connection 3」查看udp sport 67和dport 68的DHCP Discovers,然後用sendp命令發送DHCP Offer。我無法在Wireshark中看到我的數據包,並且DHCP Clinet也不會收到,它會繼續發送DHCP發現消息。無法看到從scapy sendp發送的Wireshark中的DHCP offer數據包
在wireshark上,我只能看到來自客戶端的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)
發現了一些東西,但仍然沒有看到我的數據包在Wireshark中。替換本地連接3與eth2,因爲來自scapy的ifaces命令將局域連接3檢測爲eth2。重複仍然沒有解決問題 – user2399087