gpt4 book ai didi

python - 创建畸形的以太框架?

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:54 25 4
gpt4 key购买 nike

我希望这是微不足道的,但我无法让它发挥作用。

我想在 Python 中使用 scapy 发送伪造的 ARP,但在这种情况下我还需要欺骗源 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/scapy 中添加 Ether() 层而不导致数据包格式错误?

enter image description here

最佳答案

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

参见 scapy's docs了解更多信息:

The send() function will send packets at layer 3. That is to say it will handle routing and layer 2 for you. The sendp() function will work at layer 2. It’s up to you to choose the right interface and the right link layer protocol.

official API documentation也说明了这一点:

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

Send packets at layer 3, using the conf.L3socket supersocket.

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

Send packets at layer 2 using the conf.L2socket supersocket.

关于python - 创建畸形的以太框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26559718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com