Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否创建格式不正确的以太帧?_Python_Scapy - Fatal编程技术网

Python 是否创建格式不正确的以太帧?

Python 是否创建格式不正确的以太帧?,python,scapy,Python,Scapy,我希望这是微不足道的,但我不能让它工作 我想在Python中使用scapy发送伪造的ARP,但在这种情况下,我还需要伪造源MAC地址(vmac、vip、rip都是有效值) 上述内容在Wireshark中显示为格式错误的数据包,网络上的每个人都会忽略它 如果我移除Ether()层,它工作正常(但它不会欺骗源mac,因此在这种情况下不够好): 如何在Python/scapy中添加Ether()层而不导致格式错误的数据包 发送功能用于在第3层发送数据包,而您的数据包是第2层数据包。您应该使用sendp

我希望这是微不足道的,但我不能让它工作

我想在Python中使用scapy发送伪造的ARP,但在这种情况下,我还需要伪造源MAC地址(vmac、vip、rip都是有效值)

上述内容在Wireshark中显示为格式错误的数据包,网络上的每个人都会忽略它

如果我移除
Ether()
层,它工作正常(但它不会欺骗源mac,因此在这种情况下不够好):

如何在Python/scapy中添加
Ether()
层而不导致格式错误的数据包


发送功能用于在第3层发送数据包,而您的数据包是第2层数据包。您应该使用
sendp
功能

有关更多信息,请参阅:

send()
函数将在第3层发送数据包。也就是说,它将为您处理路由和第2层。
sendp()
函数将在第2层工作。由您选择正确的接口和正确的链路层协议

缔约国还指出:

send(pkts,inter=0,loop=0,verbose=None)

使用
conf.L3socket
supersocket在第3层发送数据包

sendp(pkts,inter=0,loop=0,iface=None,iface-hint=None,verbose=None)

使用conf.L2socket supersocket在第2层发送数据包

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