簡體   English   中英

使用Scapy釋放DHCP

[英]DHCP release using scapy

我想將DHCP釋放數據包發送到局域網上的DHCP服務器。

我有要偽造RELEASE數據包的機器的MAC地址。

我用Google搜索,沒有發現任何有用的信息。 有人可以指出我正確的方向嗎?

我嘗試發送帶有選項message-type:release的DHCP數據包。 基本上,我試圖發布自己的IP。 但這沒有用。

sendp(Ether(dst=server_mac)/IP(src=my_ip,dst=server_ip)/UDP(sport=68,dport=67)/BOOTP(chaddr=my_mac)/DHCP(options=[("message-type","release")]))

感謝您對此采取行動。 DHCP釋放消息要記住一件事。 當您將消息發送到服務器時,它實際上不會導致IP地址在本地計算機上被釋放。 如果您打算使用RELEASE創建DOS或其他攻擊的演示,那么您將不會很幸運。

釋放消息只是告訴DHCP服務器客戶端正在放棄網絡地址並取消剩余的租約。 放棄該地址后,客戶端應停止使用該地址。

關於為什么它可能對您不起作用的原因,我想到了幾件事。

  1. mac地址可能不正確,您沒有包括如何設置my_mac ...您不能在此處簡單地使用字符串。 您可以使用從get_if_raw_hwaddr函數獲得的值。
  2. 您在消息的bootp部分中缺少客戶端地址和事務ID。
  3. 您缺少服務器標識符,並以DHCP選項結尾。 如果使用客戶機標識符來獲取地址,則必須在發行版中使用它。 該標准規定了這一點,但是並非所有的DHCP服務器都強制要求它。

這是一個對我有用的例子。 您可以通過閱讀RFC規范和/或使用Wireshark捕獲和觀察實際數據包來找到有關DHCP的更多信息。

from scapy import *
fam,hw = get_if_raw_hwaddr('wlan0')    
send(IP(src=my_ip,dst=server_ip) / 
     UDP(sport=68,dport=67) /
     BOOTP(chaddr=hw, ciaddr='192.168.0.101', xid=random.randint(0, 0xFFFFFFFF)) /
     DHCP(options=[("message-type","release"), ("server_id", "192.168.0.1"), 'end']))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM