在scapy

时间:2018-04-25 15:48:07

标签: python ip scapy dhcp

我正在使用scapy写一个非常简单的DHCP服务器而且我一直在发送一个offer数据包。现在我这样做:

ethernet=Ether(dst=dest_mac, src=hw, type=0x800)
ip=IP(dst=dest_addr, src=srv_ip)
udp=UDP(sport=67, dport=68)
bootp=BOOTP(op=2, yiaddr=dest_addr, siaddr=srv_ip, chaddr=client_mac)
dhcp=DHCP(options=[("message-type", "offer"), ("server_id", dest_addr), ("broadcast_address", broadcast), ("router", gateway), ("subnet_mask", netmask)])
of_pack=ethernet/ip/udp/bootp/dhcp

sendp(of_pack)

客户端是ISC DHCP,安装在ubuntu服务器16.04上。 我可以在Wireshark中看到由dhclient发送的Discovery数据包,但我看不到我的服务器发送的优惠数据包(scapy说:发送1个数据包,所以看起来没问题)。 所以我认为在制作优惠包时我做错了。

因为在Wireshark中甚至没有看到,我认为问题出在IP协议层或更低层(我之前发送了格式错误的数据包,我可以在Wireshark中看到它们)。

UPD:of_pack.show()1 2

的输出

不确定,但也许问题在于校验和和/或IP头的长度?我应该手动计算还是scapy可以自己计算?

1 个答案:

答案 0 :(得分:0)

我将接口名称添加到sendp:sendp(of_pack,iface =" ens33")。 现在它至少可以通过wireshark看到。