python 创建畸形以太帧?

mnowg1ta  于 2023-11-16  发布在  Python
关注(0)|答案(1)|浏览(119)

我希望这是微不足道的,但我不能让它工作。
我想在Python中使用scramble发送一个伪造的阿普,但在这种情况下,我需要欺骗源MAC地址(vmac,vip,rip都是有效值)

op = 1
who_has_router = Ether(src=vmac)/ARP(op=op,psrc=vip,pdst=rip,hwsrc=vmac)
send(who_has_router)

字符串
上面的内容在Wireshark中显示为格式错误的数据包,并被网络上的所有人忽略。
如果我删除Ether()层,它可以正常工作(但它不会欺骗源mac,所以在这种情况下不够好):

# This works exactly as expected
op = 1
who_has_router = ARP(op=op,psrc=vip,pdst=rip,hwsrc=vmac)
send(who_has_router)


如何在Python/scrum中添加Ether()层而不会导致格式错误的数据包?
x1c 0d1x的数据

i7uq4tfw

i7uq4tfw1#

send函数用于发送第三层的数据包,而您的数据包是第二层的数据包,您应该使用sendp函数。
更多信息请参见scapy的文档:
send()函数将在第3层发送数据包。也就是说,它将为您处理路由和第2层。sendp()函数将在第2层工作。由您选择正确的接口和正确的链路层协议。
official API documentation也是这样说的:
send(pkts, inter=0, loop=0, verbose=None)
使用conf.L3socket超级套接字在第3层发送数据包。
sendp(pkts, inter=0, loop=0, iface=None, iface hint=None, verbose=None)
使用conf.L2socket超级套接字在第2层发送数据包。

相关问题