【python】DHCP_Discover数据包构造

本文档展示了如何利用Python库Scapy来构造DHCP DISCOVER请求,并发送到网络中。通过设置随机的事务ID和MAC地址,然后监听网络以捕获DHCP OFFER响应。代码详细说明了在不同网络层(应用层、传输层、网络层和数据链路层)的数据包构造过程。
摘要由CSDN通过智能技术生成

需要构造的部分:
应用层:DHCP,BOOTP
传输层:UDP
网络层:IP
数据链路层:Ether

代码:

from scapy.all import *
from scapy.layers.dhcp import BOOTP, DHCP
from scapy.layers.inet import *
import binascii
from random import randint

xid_random = randint(1,900000000)     #随机产生事务ID
mac_random = str(RandMAC())    #随机产生MAC地址
clinet_mac_id = binascii.unhexlify(mac_random.replace(':',''))    #MAC添加分隔符
print(mac_random)
ether= Ether(src= mac_random, dst = "ff:ff:ff:ff:ff:ff")
ip = IP(src = "0.0.0.0",dst = "255.255.255.255")
udp = UDP(sport =68,dport = 67)
dootp= BOOTP(chaddr =clinet_mac_id , xid = xid_random)
dhcp = DHCP(options=[("message-type","discover"),"end"])
dhcp_discover = ether/ip/udp/dootp/dhcp
sendp(dhcp_discover , iface='以太网')  
print("\n\n\nSending DHCPDISCOVER on " + "以太网")

def detect_dhcp(pkt):   #显示捕获到的DHCP offer数据包
    if (DHCP in pkt):
        ls(pkt)
sniff(filter="src port 67",iface = "以太网",prn=detect_dhcp)

结果:
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DHCP(动态主机配置协议)是一种在计算机网络中自动分配IP地址和其他网络参数的协议。DHCP Client报文是由客户端设备发送给DHCP服务器请求IP地址的信息。 DHCP Client报文通常由以下几个字段组成: 1. 源MAC地址:指示发送该报文的客户端设备的物理地址,用于唯一标识该设备。 2. 目的MAC地址:指示报文将发送到的目标设备的物理地址,即DHCP服务器的物理地址。 3. 源IP地址:客户端设备当前的IP地址,这通常是0.0.0.0,表示其尚未获得有效的IP地址。 4. 目的IP地址:DHCP服务器的IP地址,通常由客户端设备通过广播地址255.255.255.255请求DHCP服务器进行分配。 5. 报文类型:指示报文的类型,通常为DHCP Discover,表示客户端设备正在搜索可用的DHCP服务器进行IP地址分配。 6. 其他参数:客户端设备还可以在报文中包含其他参数,如主机名、DHCP选项等等,以便与DHCP服务器进行更详细的交互。 当客户端设备启动时,它会发送DHCP Discover报文到广播地址,以便寻找可用的DHCP服务器。DHCP服务器收到Discover报文后,会回复一个DHCP Offer报文,其中包含一个可供分配的IP地址。客户端设备收到Offer报文后,可以选择接受其中一个IP地址。接下来,客户端设备会发送一个DHCP Request报文,指示它接受了DHCP服务器提供的IP地址。最后,DHCP服务器会发送一个DHCP Ack报文,确认该IP地址已分配给该客户端设备。客户端设备收到Ack报文后,会更新其IP地址配置,并开始使用新的IP地址进行网络通信。 总之,DHCP Client报文是为了请求分配一个可用的IP地址而发送给DHCP服务器的。通过DHCP协议,客户端设备可以自动获得有效的IP地址和其他网络参数,从而方便地进行网络通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值