转载请注明来源:https://www.cnblogs.com/hookjc/

从《ARP协议工作原理》一文我们已经了解到,主机在两种情况下会保存、更新本机的ARP缓存表,
    1. 接收到“ARP广播-请求”包时
    2. 接收到“ARP非广播-回复”包时

从中我们可以看出,ARP协议是没有身份验证机制的,局域网内任何主机都可以随意伪造ARP数据包,ARP协议设计天生就存在严重缺陷。

假设局域网内有以下三台主机(其中GW指网关),主机名、IP地址、MAC地址分别如下:
        主机名   IP地址          MAC地址
        GW       192.168.0.1     01-01-01-01-01-01
        PC02     192.168.0.2     02-02-02-02-02-02
        PC03     192.168.0.3     03-03-03-03-03-03

在正常情况下,主机PC02与GW之间的数据流向,以及它们各自的ARP缓存表如下图所示:

当网络爱好者,主机PC03出现之后,他为了达到某种目的,于是决定实施一次ARP欺骗攻击。PC03首先向PC02发送了一个ARP数据包,作用相当于告诉PC02:“嘿,我是192.168.0.1,我的MAC地址是03-03-03-03-03-03”,接着他也向GW发送了一个ARP数据包,作用相当于告诉GW:“嘿,我是192.168.0.2,我的MAC地址是03-03-03-03-03-03”。于是,主机PC02与GW之间的数据流向,以及它们各自的ARP缓存表就变成如下图所示:

从上图我们可以看出,ARP欺骗之后,主机PC02与GW之间的所有网络数据都将流经PC03,即PC03已经掌控了它们之间的数据通讯。以上就是一次ARP欺骗的实施过程,以及欺骗之后的效果。

来源:python脚本自动迁移

ARP欺骗的原理的更多相关文章

  1. ARP工作过程、ARP欺骗的原理和现象、如何防范ARP欺骗

      地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址时确定其物理地址的一种协议. 下面假设在一个局域网内,主机A要向主机B发送IP数据报. ARP ...

  2. 中间人攻击——ARP欺骗的原理、实战及防御

    ​ 1.1 什么是网关 首先来简单解释一下什么是网关,网关工作在OSI七层模型中的传输层或者应用层,用于高层协议的不同网络之间的连接,简单地说,网关就好比是一个房间通向另一个房间的一扇门. 1.2 A ...

  3. Python黑帽编程 3.1 ARP欺骗

    Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...

  4. Python黑客编程ARP欺骗

    Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...

  5. ARP欺骗病毒,网页“篡改”,注入iframe代码!

    ---------------权威资料看这里--------------- 清华大学信息网络工程研究中心-中国教育和科研计算机网应急响应组<ARP 欺骗网页劫持攻击分析>PDF文件,直接I ...

  6. 防止ARP欺骗的方法!!!

    防止ARP欺骗的方法!!! 根据鄙人上网经常掉线,怀疑可能是某人使用网络剪刀手,网络执行官,局域网终结者等工具.经过搜索有关资料,有了一点点防范经验,借以参考~! 一 首先我们来了解下这类攻击工具的原 ...

  7. ARP欺骗,骗你没商量

    今天BOSS让我总结ARP欺骗的原理和防范策略,在这里把总结的结果贴出来吧.求人品,求速转正. ARP原理: 在局域网内部,各主机之间以MAC地址作为标识通信对象的标志.然而,有时通信发起的主机并不知 ...

  8. ARP欺骗配置及演示过程

    目录 环境 软件 网络拓扑图 配置流程 配置构思 具体流程 问题 演示过程 状态 检查Attack前centOS7_1的ARP地址表 在kali上输入以下命令发动攻击 此时查看centOS7_1的AR ...

  9. 编写Python脚本进行ARP欺骗

    1.系统环境:Ubuntu 16.04 Python版本:2.7 2.攻击机器:Ubuntu(192.16.0.14) 目标机器:Windows 7(192.168.0.9) 网关:(192.168. ...

随机推荐

  1. Java初学者作业——添加程序断点,以Debug模式运行程序,观察变量的交换

    返回本章节 返回作业目录 需求说明: 定义两个变量,分别用于存储学生的语文成绩和数学成绩,通过程序将这两个变量的值进行交换,输出变量之前的值和交换后变量中的值. 添加断点,观察变量值的交换过程. 实现 ...

  2. 你在寻找Vue3移动端项目框架嘛?请看这里

    现在web开发变得更加美妙高效,在于开发工具设计得更好了,丰富性与易用性,都有所提高.丰富性带来了一个幸福的烦恼,就是针对实际应用场景,如何选择工具 ? 1. Vue Cli和Vite之间的选择 Vi ...

  3. Python max()方法扩展:求字典中值最大的键

    重要的应该写在前面[捂脸]   场景一:仅求最大值对应的键,代码如下: >>> dic = {'A':4, 'B':2, 'C':3} >>> max_key = ...

  4. 初识python: flush 实现进度条打印

    通过flush(强制刷新)实现,类似进度条打印: #!/user/bin env python # author:Simple-Sir # time:20180918 #打印进度条 import sy ...

  5. 理解闭包--js面向对象编程

    什么是闭包? 先看一段代码: function a(){ var n = 0; function inc() { n++; console.log(n); } inc(); inc(); } a(); ...

  6. vue iview element-ui兼容IE11浏览器

    首先安装babel-polyfill npm install babel-polyfill --save-dev 入口文件引用,在main.js中引用 import 'babel-polyfill' ...

  7. Docker的学习笔记(一)基础知识

    概述 本人最近在学习docker相关的知识,既是工作本身的需要也是自己对技术的追求的必要,以后我也会推出容器相关的随笔,既可以增长自己的知识,也可以和读者广泛交流,岂不乐乎?话不多说.第一篇先介绍do ...

  8. 构造注入链:POP

    1.POP链原理简介: 在反序列化中,我们能控制的数据就是对象中的属性值,所以在PHP反序列化中有一种 漏洞利用方法叫"面向属性编程",即POP( Property Oriente ...

  9. 还在用visio?这款画图工具才是真的绝!

    最近有读者私信我,问我推文的配图是用什么工具画的,很好看,也想学习一下.今天就给大家介绍一下这款画图工具--Draw.io 概述 draw.io是一款免费的网页版画图工具(也有桌面版),支持流程图.U ...

  10. 毫米转像素dpi

    public static double MillimeterToPixel_X(double length) //length是毫米,1厘米=10毫米 { System.Windows.Forms. ...