谢谢你捅了一下.DHCP释放消息需要记住一件重要的事情.将消息发送到服务器时,实际上不会导致在本地计算机上释放IP地址.如果您正在考虑使用RELEASE创建DOS或其他攻击的演示,那么您将没有太多运气.
释放消息只是告诉DHCP服务器客户端正在放弃网络地址并取消剩余的租约.客户端在放弃地址后停止使用该地址.
关于为什么它可能不适合你,有几件事情会浮现在脑海中.
mac地址可能不正确,你没有包括如何设置my_mac ...你不能在这里简单地使用一个字符串.您可以使用从get_if_raw_hwaddr函数获取的值.
您缺少消息的bootp部分中的客户端地址和事务ID.
您缺少服务器标识符,并以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']))