gpt4 book ai didi

python - 在 Python 中发送自定义帧/数据包

转载 作者:行者123 更新时间:2023-12-05 05:16:04 26 4
gpt4 key购买 nike

我阅读了很多文章,发现了如何使用套接字(AF_INET、SOCK_RAW、IPPROTO_RAW)发送基于 IP 的自定义数据包。但我想从以太网头开始发送完全自定义的数据包。如果我无法形成以太网 header ,则无法发送 ARP 数据包,因为 ARP 不基于 IP。请帮忙!附言我在 Windows 7 上,而不是 Linux :(

最佳答案

在python中,最简单的方法就是使用跨平台的scapy库。众所周知

Scapy

您可以嗅探、发送……大量数据包、添加您自己的协议(protocol)、使用现有协议(protocol)……它几乎适用于所有平台。 (在windows上,它使用Npcap/Winpcap)

然后您可以使用以下命令构建 ARP 数据包

from scapy.all import *
pkt = ARP()
pkt.show()
sendp(Ether(dst=..., src=...)/pkt)

这将创建这样的数据包

###[ ARP ]###
hwtype= 0x1
ptype= 0x800
hwlen= 6
plen= 4
op= who-has
hwsrc= 00:50:56:00:1e:3d
psrc= 212.83.148.19
hwdst= 00:00:00:00:00:00
pdst= 0.0.0.0

要构建数据包,请使用/运算符

ether = Ether()
ether.src = “00:00:00:00:00:00”
ether.dst = “ff:ff:ff:ff:ff:ff”
arp = ARP()
[edit arp.psrc, arp.pdst, arp.hwsrc, arp.hwdst]
packet = ether/arp
sendp(packet) # sens packet on layer 2

看看它的Scapy documentation

关于python - 在 Python 中发送自定义帧/数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50934561/

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