Scapy4

DHCP数据包包括DHCP协议、BOOTP协议、UDP协议、IP协议、Ether协议,所以需要构造好这些。

1
ls(BOOTP)#显示BOOTP可以设置的值
op         : ByteEnumField                       = ('1')
htype      : ByteField                           = ('1')
hlen       : ByteField                           = ('6')
hops       : ByteField                           = ('0')
xid        : IntField                            = ('0')
secs       : ShortField                          = ('0')
flags      : FlagsField                          = ('<Flag 0 ()>')
ciaddr     : IPField                             = ("'0.0.0.0'")
yiaddr     : IPField                             = ("'0.0.0.0'")
siaddr     : IPField                             = ("'0.0.0.0'")
giaddr     : IPField                             = ("'0.0.0.0'")
chaddr     : Field                               = ("b''")
sname      : Field                               = ("b''")
file       : Field                               = ("b''")
options    : StrField                            = ("b''")

我们需要设置xid(事务ID,区分是否是自己发的包)、chaddr(和Ether协议的源MAC相同)