使用netwox 的实例进行ARP地址解析协议分析【网络工程】(保姆级图文)

news2024/11/24 0:42:04

目录

    • 1. netwox 构造 ARP 报文
      • 使用 netwox 工具构造 ARP 包。
      • 1) 查看 netwox 所在主机默认的 ARP 包的相关信息,执行命令如下:
      • 2) 构造 ARP 请求包,请求目标主机 192.168.43.95,执行命令如下:
      • 3) 为了验证构造的 ARP 请求包,使用 Wireshark 进行抓包,如图所示。
      • 4) 如果请求的目标主机存在,将成功返回 ARP 响应数据包,如图所示。
    • 2. netwox构造免费ARP数据包
      • 1) 构造免费的 ARP 数据包
      • 2) 使用 Wireshark 进行抓包
    • 3. netwox周期性发送ARP响应包
      • 实验设备
      • 1) 在发送ARP响应之前,在主机B上查看主机ARP缓存表信息,执行命令如下:
      • 2) 创建虚拟主机 192.168.43.97,并向该主机发送 ARP 响应包,设置 MAC 地址为 00:01:01:21:22:23,执行命令如下:
      • 3) 此时再次在主机B上查看主机 ARP 缓存表信息,执行命令如下:
      • 4) 为了验证发送的 ARP 响应包,捕获数据包进行查看,如图所示。
    • 4. 伪造ARP响应
      • 1) 在模拟之前,验证局域网中是否存在主机 192.168.43.97。在主机 B 上使用 arping 命令 ping 该主机。执行命令如下:
      • 2) 在主机 A 上伪造 ARP 响应,创建虚拟主机 192.168.43.97,设置其 MAC 地址为 A1:B2:C3:D4:E5:F6。执行命令如下:
      • 3) 再次在主机 B 上使用 arping 命令 ping 该主机。执行命令如下:
      • 4) 为了验证整个过程,捕获数据包进行查看,如图所示。
      • 5) 查看对应的响应包,如图所示。
    • 5. linux下删除ARP缓存表
    • 总结


欢迎关注 『网络工程专业』 系列,持续更新中
欢迎关注 『网络工程专业』 系列,持续更新中

温馨提示:对虚拟机做任何设置,建议都要先快照备份!

1. netwox 构造 ARP 报文

  • ARP 报文默认由操作系统自动发送。用户可以自己构造 ARP 报文,向目标主机发送请求,从而获取目标主机的 MAC 地址。这时,可以使用 netwox 工具提供的编号为 33 的模块。

使用 netwox 工具构造 ARP 包。

1) 查看 netwox 所在主机默认的 ARP 包的相关信息,执行命令如下:

root@kail:~# netwox 33

输出信息如下:
在这里插入图片描述

Ethernet________________________________________________________.
| 00:0C:29:FE:F5:87->00:08:09:0A:0B:0C type:0x0806              |
|_______________________________________________________________|
ARP Request_____________________________________________________.
| this address : 00:0C:29:FE:F5:87 0.0.0.0                      |
| asks         : 00:00:00:00:00:00 0.0.0.0                      |
|_______________________________________________________________|
  • 上述输出信息中,Ethernet 部分为以太网信息。ARP Request 部分为 ARP 请求。this address 表示源地址信息。其中,00:0C:29:FE:F5:87 为源主机 MAC 地址;asks 为目标地址信息,这里为 ARP 请求包。由于还没有构造请求,因此地址为 0。

2) 构造 ARP 请求包,请求目标主机 192.168.43.95,执行命令如下:

root@kali:~# netwox 33 -i 192.168.43.95

输出信息如下:
在这里插入图片描述

Ethernet________________________________________________________.
| 00:0C:29:FE:F5:87->00:08:09:0A:0B:0C type:0x0806              |
|_______________________________________________________________|
ARP Request_____________________________________________________.
| this address : 00:0C:29:FE:F5:87 0.0.0.0                      |
| asks         : 00:00:00:00:00:00 192.168.43.95                |
|_______________________________________________________________|
  • 此时,ARP Request 部分 asks 中的 00:00:00:00:00:00 为目标 MAC 地址,因为正在请求目标主机的 MAC 地址,所以为 00:00:00:00:00:00。

  • 192.168.43.95 为目标主机的IP地址,表示向该主机进行 ARP 请求。


3) 为了验证构造的 ARP 请求包,使用 Wireshark 进行抓包,如图所示。

  • 其中,第一个数据包为构造的 ARP 请求包。在 Address Resolution Protocol(request) 部分中,Opcode 的值为 request(1),表示该数据包为 ARP 请求包;Target MAC address 的值为 00:00:00_00:00:00(00:00:00:00:00:00),表示此时没有获取目标 MAC 地址;Target IP address 的值192.168.43.95,表示请求主机的 IP 地址。
    在这里插入图片描述

4) 如果请求的目标主机存在,将成功返回 ARP 响应数据包,如图所示。

  • 其中,第 2 个数据包为 ARP 响应数据包。在 Address Resolution Protocol(reply) 部分中,Opcode 的值为 reply(2),表示该数据包为 ARP 响应包;Sender IP address 的值为 192.168.43.96,表示此时源主机为目标主机;Sender MAC address 的值为 00:0c:29:cb:12:93,表示 00:0c:29:fe:f5:87 为目标主机 192.168.43.95 的 MAC 地址。

2. netwox构造免费ARP数据包

1) 构造免费的 ARP 数据包

  • 设置源 IP 地址和目标 IP 地址为 192.168.43.96,执行命令如下:
root@kail:~# netwox 33 -g 192.168.43.96 -i 192.168.43.96

输出信息如下:
在这里插入图片描述

Ethernet________________________________________________________.
| 00:0C:29:FE:F5:87->00:08:09:0A:0B:0C type:0x0806              |
|_______________________________________________________________|
ARP Request_____________________________________________________.
| this address : 00:0C:29:FE:F5:87 192.168.43.96                |
| asks         : 00:00:00:00:00:00 192.168.43.96                |
|_______________________________________________________________|

2) 使用 Wireshark 进行抓包

验证构造的免费 ARP 数据包,如图所示。
在这里插入图片描述

  • 注意启动了wireshark后这个terminal就锁定了,直到关闭wireshark才能再执行别的命令,所以要新开一个terminal窗口用于下面的命令。如下图所示:

  • 得到的抓包结果
    在这里插入图片描述

  • 其中,第一个数据包的 Info 列显示 Gratuitous ARP for 192.168.43.96(Request),表示该数据包为构造的免费 ARP 数据包
    在 Address Resolution Protocol(request/gratuitous ARP) 部分中,Sender IP address 和 Target IP address 的值为同一个 IP 地址 192.168.43.96。


3. netwox周期性发送ARP响应包

实验设备

已知 netwox 所在主机为主机 A,主机 B 的 IP 地址为 192.168.43.96。使用 netwox 工具发送 ARP 响应包,以更换 ARP 缓存表中主机的 MAC 地址信息。

1) 在发送ARP响应之前,在主机B上查看主机ARP缓存表信息,执行命令如下:

root@kail:~# arp -a
  • 输出信息如下:
    在这里插入图片描述
_gateway (192.168.43.1) at 52:bc:83:98:1e:cb [ether] on eth0
  • 上述输出信息中,主机 192.168.43.96 的 MAC 地址为 52:bc:83:98:1e:cb。

2) 创建虚拟主机 192.168.43.97,并向该主机发送 ARP 响应包,设置 MAC 地址为 00:01:01:21:22:23,执行命令如下:

root@kail:~# netwox 80 -i 192.168.43.97 -e 00:01:01:21:22:23
  • 执行命令后没有任何输出信息。

3) 此时再次在主机B上查看主机 ARP 缓存表信息,执行命令如下:

root@kail:~# arp -a

输出信息中,主机 192.168.43.1 的 MAC 地址由原来的 00:0c:29:bc:a4:89 变为了 00:01:01:21:22:23。

4) 为了验证发送的 ARP 响应包,捕获数据包进行查看,如图所示。

在这里插入图片描述

其中,第 1-8 个数据包为重复发送的 ARP 响应包。


4. 伪造ARP响应

以主机 A 为基础实施伪造 ARP 响应
伪造模拟主机 192.168.43.97,其 MAC 地址为 A1:B2:C3:D4:E5:F6。已知局域网中另一主机为主机 B,其 IP 地址为 192.168.59.135。具体步骤如下:

1) 在模拟之前,验证局域网中是否存在主机 192.168.43.97。在主机 B 上使用 arping 命令 ping 该主机。执行命令如下:

root@kail:~# arping 192.168.43.97

输出信息如下:
在这里插入图片描述

ARPING 192.168.43.97 from 192.168.59.135 eth0

没有任何输出信息,表示主机 192.168.43.97 不存在。

2) 在主机 A 上伪造 ARP 响应,创建虚拟主机 192.168.43.97,设置其 MAC 地址为 A1:B2:C3:D4:E5:F6。执行命令如下:

root@kail:~# netwox 73 -i 192.168.43.97 -e A1:B2:C3:D4:E5:F6

在这里插入图片描述
执行命令后没有任何输出信息,但是成功创建模拟的主机 192.168.43.97。

3) 再次在主机 B 上使用 arping 命令 ping 该主机。执行命令如下:

root@kail:~# arping 192.168.43.97

输出信息如下:
在这里插入图片描述

ARPING 192.168.43.97 from 192.168.43.96 eth0
Unicast reply from 192.168.43.97 [A1:B2:C3:D4:E5:F6]  11.259ms
Unicast reply from 192.168.43.97 [A1:B2:C3:D4:E5:F6]  19.159ms
Unicast reply from 192.168.43.97 [A1:B2:C3:D4:E5:F6]  23.444ms
Unicast reply from 192.168.43.97 [A1:B2:C3:D4:E5:F6]  30.950ms
Unicast reply from 192.168.43.97 [A1:B2:C3:D4:E5:F6]  36.612ms
  • 以上输出信息表示已经成功向主机 192.168.43.97 发出 arping 命令,并得到了对应的 MAC 地址 A1:B2:C3:D4:E5:F6,表示该主机是存在的。

4) 为了验证整个过程,捕获数据包进行查看,如图所示。

在这里插入图片描述

  • 其中,第 1 个数据包为 ARP 请求包,可以看到源 IP 地址为 192.168.43.96(主机 B),目标 IP 地址为 192.168.43.97(虚拟主机)。这说明的确向虚拟主机发送了 ARP 请求。

5) 查看对应的响应包,如图所示。

在这里插入图片描述

  • 其中,第 2 个数据包为 ARP 响应包,可以看到源 IP 地址为 192.168.43.97(虚拟主机的),目标主机的 IP 地址为 192.168.43.96(主机 B),源 MAC 地址为 a1:b2:c3:d4:e5:f6(假的),目标 MAC 地址为 00:0c:29:ca:e4:66(主机 B)。这说明虚拟主机成功给主机 B 返回了响应。

5. linux下删除ARP缓存表

这里老师的命令ip neigh flush dev ens33有问题,这句适用于Unix系统中有网卡ens33,然而我们的kail的网卡是eth0,所以我们需要改变命令为

ip neigh flush dev eth0

在这里插入图片描述

原来的arp表
在这里插入图片描述

删除后的arp表
在这里插入图片描述


总结

大家喜欢的话,给个👍,点个关注!继续跟大家分享敲代码过程中遇到的问题!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2022 mzh

Crated:2022-3-6

欢迎关注 『网络工程专业』 系列,持续更新中
欢迎关注 『网络工程专业』 系列,持续更新中
【网络工程】vmware虚拟机连接本机网络实现上网(保姆级图文)
【更多内容敬请期待】


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/685467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA(2021.3.3) 登录Github copilot最新版本报错解决

"Request sign ln Initiate failed with message:read ECONNRESET, request id: 6, error code:-32603 " .在获得github认证后的登录设备验证阶段弹出。此处应该为login 弹出异常,方法一:先使用Github 520进行动态替换,打开自己hos…

霍夫变换椭圆检测(matlab仿真与图像处理系列第2期)

概述 椭圆检测是图像处理中的一个重要问题,其目的是从图像中检测出可能存在的椭圆。在实际的应用中,椭圆常常被用来描述物体的形状或者得到物体的尺寸信息。 传统的椭圆检测方法通常采用二维Hough变换,在求解过程中需要处理大量的数据,并且计算复杂度高,导致速度较慢,…

linux系统grep文本三剑客之一

文章目录 一、grep常用选项二、正则表达式三、sort命令四、tr命令五、cut命令六、split命令七、paste命令八、正则表达式总结 一、grep常用选项 grep:文本三剑客之一,对文本内容进行过滤,支持正则表达式,针对行来进行处理。 -m&a…

【C++】 Qt-信号与槽

文章目录 基本概念添加信号与槽方法一方法二 自定义信号与槽CheckBox自定义QMessageBox自定义信号 信号与槽多对多一个信号连接多个槽多个信号连接一个槽一个信号连接一个信号连接一个槽 断开连接方法一方法二判断是否连接成功 基本概念 信号(signal)和…

chatgpt赋能python:Python自动执行函数——提高生产力的利器

Python自动执行函数 —— 提高生产力的利器 Python作为一种高级编程语言,具有强大的自动化能力,可以轻松实现多种任务的自动执行,从而提高生产力和效率。这篇文章将介绍如何使用Python自动执行函数,以及它对于SEO的重要意义。 什…

Flutter Dart类

目录 类 构造函数 命名构造函数 重定向构造函数 常量构造函数 工厂构造函数 Getters 和 Setters 初始化列表 可覆写的操作符 类 创建一个dart文件,名称全小写,里面的类可以按照驼峰命名法。文件名和类名可以不保持统一,这个跟Java有明…

Scrapy: 一个强大的 Python 爬虫框架--介绍--下载--启动!!

目录 Scrapy 影响力 介绍 主要特点 架构 运行流程 基本使用 安装 创建 Scrapy 项目 创建爬虫 爬虫包含的内容 运行爬虫 Scrapy 影响力 作为目前爬虫主流框架之一,Scrapy的影响力和应用范围非常广泛: 根据GitHub上的数据,Scrapy是一…

ERR! code ERR_SOCKET_TIMEOUT

问题 安装npm包,终端报错ERR! code ERR_SOCKET_TIMEOUT ERR! code ERR_SOCKET_TIMEOUT详细问题 笔者运行以下命令重新安装依赖项: npm install控制台报错,具体报错信息如下 npm ERR! code ERR_SOCKET_TIMEOUT npm ERR! network Socket t…

【C++】【VLD】VLD检测内存泄漏

【C】【VLD】VLD检测内存泄漏 C/C 程序越复杂,内存的管理显得越重要,稍有不慎就会出现泄漏。如果内存泄漏不是很严重,在短时间内对程序不会有太大影响,这也使得内存泄漏问题有很强的隐蔽性,不易被发现。 然而不管内存…

计算机网络——传输层

序言 计算机网络中的传输层在当今的社会起到了什么作用? 计算机网络中的传输层在通信和数据传输方面起着至关重要的作用。传输层是计算机网络体系结构中的一层,它负责提供端到端的可靠数据传输和通信服务;有着以下几个方面作用:可…

3-css高级特效-2

01-空间转换 空间转换简介 空间:是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间,Z 轴位置与视线方向相同。空间转换也叫 3D转换属性:transform 平移 transform: translate3d(x, y, z); transform: translateX(); transfor…

chatgpt赋能python:Python聊天机器人程序:把智能带入聊天

Python聊天机器人程序:把智能带入聊天 在数字化时代,机器人指引和客户服务变得越来越流行。为了快速而有效地满足这种需求,聊天机器人被广泛研究与开发。Python是在这方面一个非常受欢迎的编程语言,能够快速地构建聊天机器人。在…

【C++】win 10 / win 11:Visual Studio 2022 社区版免费下载与安装

目录 一、Visual Studio 2022 下载 二、Visual Studio 2022 安装 三、Visual Studio 2022 快捷方式创建 四、Visual Studio 2022 使用 一、Visual Studio 2022 下载 Visual Studio 2022 官方下载https://visualstudio.microsoft.com/zh-hans/downloads/首先登陆 Visual Stu…

基于Java医院在线挂号预约系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

Jmeter简单实现登录测试

目录 前言: 1、添加线程组--在测试计划上右击-添加-Threads-线程组 2、添加http请求默认值--在线程组上右击-添加-配置元器件-http请求默认值 3、添加sampler-http请求-登录界面 4、添加sampler-http请求-登录-携带用户名和密码 5、创建存放用户名和密码的文件…

数通王国历险记之TCP协议下的三大协议的验证实验

系列文章目录 数通王国历险记(1) 前言 一,我们要先知道PDU是什么? 二、TCP协议下的三大协议的验证实验 1.FTP的验证实验 1,拓扑图 2.将lsw4配置一下 3,FTP服务器端开启FTP服务: 4&#x…

SpringBoot 如何使用 TestEntityManager 进行 JPA 集成测试

SpringBoot 如何使用 TestEntityManager 进行 JPA 集成测试 简介 在开发过程中,JPA 是常用的持久化框架之一,它可以帮助我们将对象映射到数据库中,并提供了一系列操作数据库的 API。在进行 JPA 的开发和测试时,我们通常会使用一…

Mybatis实现分页功能

1、关于逻辑分类和物理分页 分页可分为逻辑分页和物理分页 逻辑分页是一次性把全部数据查询加载进内存 ,然后再进行分页。这样优点是减少IO次数,适合频繁访问、数据量少的情况。缺点是不适合大数据量,容易造成内存溢出。物理分页是利用limi…

Android JVM 原理简析

当我们在开发 Android 应用程序时,我们实际上是在使用 Java 编程语言编写代码,并将其编译为在 Android 上运行的字节码。这些字节码最终在 Android 设备上的 Java 虚拟机(JVM)中执行。 Android JVM的意义 学习 Android JVM&#…

Java基础知识面试题

Java概述 何为编程 编程就是使用某种程序设计语言编写程序代码让计算机解决某个问题 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作&a…