【问题标题】:Scapy DHCP-Discover results in malformed packetScapy DHCP-Discover 导致数据包格式错误
【发布时间】:2021-01-04 16:26:10
【问题描述】:

我是网络新手。并且发现使用 scapy 是学习不同协议的好方法。

我正在尝试发送一个 DHCPDISCOVER 数据包,但是在 Wireshark 中它以格式错误的数据包形式出现。

这是我用来构造数据包的代码(我的 MAC 地址已被排除并替换为“[我的 MAC 地址]”:

ethernet = Ether(dst='ff:ff:ff:ff:ff:ff',src="[my MAC address]",type=0x800)
ip = IP(src ='0.0.0.0',dst='255.255.255.255')
udp = UDP (sport=68,dport=67)
fam,hw = get_if_raw_hwaddr("Wi-Fi")
bootp = BOOTP(chaddr = hw, ciaddr = '0.0.0.0',xid =  0x01020304,flags= 1)
dhcp = DHCP(options=[("message-type","discover"),"end"])
packet = ethernet / ip / udp / bootp / dhcp
scap.send(packet, iface="Wi-Fi")

这是数据包的wireshark结果:

14 2.065968 ASUSTekC_a5:fa:7a 广播 IPX 300 [格式错误的数据包]

谢谢!

【问题讨论】:

    标签: python-2.7 networking network-programming scapy dhcp


    【解决方案1】:

    如果您要指定第 2 层,则需要改用发送/接收函数的*p variants

    scap.sendp(packet, iface="Wi-Fi")
    

    我必须承认,我还没有仔细研究为什么这会导致数据包格式错误,但我假设它会尝试向数据包添加第 2 层协议对你来说,在最终的数据包中产生两个这样的层。

    【讨论】:

    • 谢谢,问题解决了。我已经阅读了 RFC 2131 (DHCP) 大约三遍,但不知道出了什么问题。我会给你一个赞成票,但只有不到 15 个代表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多