【网络安全---ICMP报文分析】Wireshark教程----Wireshark 分析ICMP报文数据试验

一,试验环境搭建

1-1 试验环境示例图

1-2 环境准备

两台kali主机(虚拟机) 

                kali2022   192.168.220.129/24

                kali2022   192.168.220.3/27

1-2-1 网关配置: 

 编辑-------- 虚拟网路编辑器  

更改设置进来以后 ,先选择NAT模式,然后是NAT设置

网关配置好确定

1-2-2 IP地址配置

首选更改网络连接模式为NAT模式

两个主机都设置成NAT模式以后开机 ,打开终端修改A主机的配置,指令如下:

nmcli connection edit Wired\ connection\ 1
goto ipv4.addresses
change
192.168.220.129/24
back
goto gateway
change
192.168.220.2
back
back
save
activate
quit

截图如下:

这样主机A的IP地址设置完成 

以同样的方法设置主机B的IP地址

nmcli connection edit Wired\ connection\ 1
goto ipv4.addresses
change
192.168.220.3/27
back
goto gateway
change
192.168.220.2
back
back
save
activate
quit

1-2-3 Mac地址配置

修改A主机的mac地址,修改为00:aa:aa:aa:aa:aa

macchanger --mac=00:aa:aa:aa:aa:aa eth0

修改好了查看A主机的网络配置 

ip addr show

修改B主机的mac地址,修改为00:bb:bb:bb:bb:bb 

macchanger --mac=00:bb:bb:bb:bb:bb eth0

 修改好了查看一下B主机的网络配置 

ip addr show

试验环境准备好了,接下来就开始抓包,开始分许 

二,详细试验步骤

为了避免物理机网络的干扰,最好是物理机断网进行试验

2-1 主机A--- Ping ---主机B

2-1-1 理论分析过程图解

2-1-2 判断对方是否跟自己处在同一个网段 

A主机判断B主机是否跟自己同一个网段

A_IP:192.168.220.129                   

GW:255.255.255.0

B_IP:192.168.220.3

GW:255.255.255.254

第一步:把A主机的IP地址转换为二进制

 11000000.10101000.11011100.10000001

第二步:A主机的子网掩码转换成二进制

 11111111.11111111.11111111.00000000

第三步:对两者进行‘与’操作,全1得1,有零得零,最后得到结果

 11000000.10101000.11011100.10000001

 11111111.11111111.11111111.00000000

得到结果为 11000000.10101000.11011100.0000000

转换成十进制为:192.168.220.0

第四步:把B主机的IP地址转换为二进制

  11000000.10101000.11011100.00000011

第五步B主机二进制IP地址跟A主机二进制子网掩码进行‘与’操作:

   11000000.10101000.11011100.00000011

   11111111.11111111.11111111.00000000

得到结果为 11000000.10101000.11011100.0000000

转换成十进制为:192.168.220.0

结论:得到都是192.168.220.0 A主机跟B主机处于同一个网段

B主机判断A主机是否跟自己同一个网段

A_IP:192.168.220.129                   

GW:255.255.255.0

B_IP:192.168.220.3

GW:255.255.255.254

第一步:把B主机的IP地址转换为二进制

11000000.10101000.11011100.00000011

第二步:B主机的子网掩码转换成二进制

 11111111.11111111.11111111.11100000

第三步:对两者进行‘与’操作,全1得1,有零得零,最后得到结果

 11000000.10101000.11011100.00000011

 11111111.11111111.11111111.11100000

得到结果为 11000000.10101000.11011100.0000000

转换成十进制为:192.168.220.0

第四步:把A主机的IP地址转换为二进制

  11000000.10101000.11011100.10000001

第五步:A主机二进制IP地址跟B主机二进制子网掩码进行‘与’操作:

   11000000.10101000.11011100.10000001

   11111111.11111111.11111111.11100000

得到结果为 11000000.10101000.11011100.10000000

转换成十进制为:192.168.220.128

结论:得到分别是192.168.220.0 和 192.168.220.128 所以B主机跟A主机不在同一个网段

总结:简单来说就是主机A拿自己的IP地址的二进制和子网掩码的二进制进行异或运算得到一个IP地址,主机A再拿B主机的IP地址跟自己自己的子网掩码进行同样的异或运算得到另一个IP地址,看这两个IP地址是否一样

2-1- 3 试验分析

主机A,主机B打开wireshark工具

搜索wireshark

打开以后 捕获---选项---eth0 (两个主机的都打开转备好,但别开始)

注意:一定要关掉最下面的‘在所有接口上使用混杂模式’

主机A输入ping命令(准备好,不要运行)

ping -c 192.168.220.129

接下来迅速打开连个主机的wireshark 点击开始进行抓包 

然后迅速回到A主机回车执行ping 命令

执行完以后两个主机停止抓包

主机A的数据包

主机B的数据包 

分析过程 

主机A先判断主机B是否跟自己同一个网段,发现是跟自己同一个网段

A4:广播问谁有主机B的Mac地址

A5:B回复了自己的Mac地址

A2:A封装自己的ICMP报文以后,直接发给了B(源Mac是自己,目标Mac是主机B

B3:由于B判断A跟自己不是一个网段,所以通过广播询问网关Mac地址

B4:网关回复了自己的Mac地址给B

B2:主机B封装ICMP回复信息发给A主机,但是注意报文内容,源Mac是自己,目标Mac是网关

这个数据包会送到网关那里,由网关转发给A主机,可能抓包没抓完整,网关通过ARP协议问主机A的Mac地址过程没有抓出来,应该是网关拿到数据以后发现是发给主机A的,就会广播询问主机A的Mac地址的。

注意:主机A,主机B抓到的有些包是一样的,比如A4和B5,B6和A5,是因为ARP是广播协议,何为广播?每个主机都能听得到,所以两个主机抓到的有些包一样。

2-2 主机B---ping ---主机A

2-2-1 理论分析过程

01:主机B先判断A是不是跟自己一个网段,发现不是跟自己一个网段

02:主机B就会广播的方式问网关的mac地址

03:网关把自己的mac地址发给B

04:主机B封装ICMP报文以后发给主机A,源Mac是自己,目标Mac是网关,由网关进行转发

05:主机A收到B的ICMP报文以后会需要回复,所以先判断主机B是否跟自己同一个网段

       发现主机B是跟自己同一个网段

06:这时候A会广播问主机B的Mac地址

07:主机B把自己的Mac地址回复给A主机

08:A主机封装ICMP数据包直接发送给B,源mac:主机A自己,目标Mac:B主机的Mac

2-2-2 试验分析

如果达到更好的效果,应该虚拟机恢复拍照,重新配置网路信息,因为经过一轮通信以后很有可能会ARP缓存,有了缓存以后有些时候就不需要发ARP广播了,直接根据缓存进行发包。

不过我就直接演示了

按上述步骤抓包

ping 192.168.220.129

主机B的数据包

主机A的数据包 

分析过程 

先判断自己是不是A主机一个网段,结果不是(之间讲了如何判断)

所以先询问网关的Mac地址

B4:询问网关的Mac地址

B5:网关回复自己的Mac地址

B1:主机B封装ICMP数据发给A主机(注意源Mac是自己,目标Mac是网关,不信看一下数据包内容,第二行src表示源Mac地址,dst表示目标Mac地址)

B2:网关拿到数据发现要发给主机A,发广播询问主机A的Mac地址

A2:主机A收到广播以后告诉网关自己的Mac地址,网关就会把数据转交给主机A

主机A收到报文,需要回复,先判断主机B是否跟自己一个网段,发现是

A5:主机A广播询问B的Mac地址

A6:主机B收到广播进行回复,把自己的Mac地址告诉主机A

A4:主机A直接对主机B进行回复,源Mac是自己的,目标Mac是主机B的(因为对于主机A,主机B跟自己处于一个网段,看一下这个数据包内容把)

果然src是主机A自己,dst是主机B

三,试验建议

最好是通过kali linux去做,修改MAC地址比较方便

在抓包的时候关闭混杂模式

在抓包之后,注意清空ARP缓存

最好是只ping 一个包,通过-c 来指定个数

四,总结

其实做这个试验之前,我对如何判断两个主机是否处于同一个网段,如何用ICMP协议通信等比较模糊,甚至认为两个主机处在同一个网段就处在同一个网段。现在才发现还有相对之分,就比如说本试验以A的视角,主机B跟主机A就是同一个网段,以B的视角主机B跟主机A不在同一个网段,虽然是A ping B 然后B ping A .但是两者通信还是有所区别的。本试验关键点就是理解一些概念,还要会判断两个主机是否处于同一个网段等,希望大家也能自己动手去分析分析具体过程。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式12、代理模式 Proxy

解释说明:代理模式(Proxy Pattern)为其他对象提供了一种代理,以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 抽…

【2023年11月第四版教材】第18章《项目绩效域》(第一部分)

第18章《项目绩效域》(第一部分) 1 章节内容2 干系人绩效域2.1 绩效要点2.2 执行效果检查2.3 与其他绩效域的相互作用 3 团队绩效域3.1 绩效要点3.2 与其他绩效域的相互作用3.3 执行效果检查3.4 开发方法和生命周期绩效域 4 绩效要点4.1 与其他绩效域的相…

架构案例2022(四十二)

促销管理系统 某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性,由于当前用户规模不大,业务也相对…

《数字图像处理-OpenCV/Python》连载(10)图像属性与数据类型

《数字图像处理-OpenCV/Python》连载(10)图像属性与数据类型 本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 第2章 图像的数据格式 在P…

MyBatisPlus(九)模糊查询

说明 模糊查询&#xff0c;对应SQL语句中的 like 语句&#xff0c;模糊匹配“要查询的内容”。 like /*** 查询用户列表&#xff0c; 查询条件&#xff1a;姓名包含 "J"*/Testvoid like() {String name "J";LambdaQueryWrapper<User> wrapper ne…

mysql面试题17:MySQL引擎InnoDB与MyISAM的区别

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL引擎InnoDB与MyISAM的区别 InnoDB和MyISAM是MySQL中两种常见的存储引擎,它们在功能和性能方面有一些区别。下面将详细介绍它们之间的差异。…

基于安卓android微信小程序的校园维修平台

项目介绍 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整…

OpenCV 15(SIFT/SURF算法)

一、SIFT Harris和Shi-Tomasi角点检测算法&#xff0c;这两种算法具有旋转不变性&#xff0c;但不具有尺度不变性&#xff0c;以下图为例&#xff0c;在左侧小图中可以检测到角点&#xff0c;但是图像被放大后&#xff0c;在使用同样的窗口&#xff0c;就检测不到角点了。 尺度…

如何在springboot2中利用mybatis-plus进行分页查询操作。

1.创建配置mp的配置类 在mp的拦截器中加入分页拦截器 package com.example.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springfra…

10月4日作业

server #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//实例化一个服务器server new QTcpServer(this);connect(server, &QTcpServer::newConnection, …

数仓使用SQL脚本在数据库中添加初始数据示例

文章目录 需要在虚拟机上开启数据库 点击确定后&#xff0c;可以点开这个连接&#xff0c;查看数据库信息 运行 init_mysql.sql 创建mall 数据库 -- 设置sql_mode set sql_mode NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES;-- 创建数据库mall create database mall;-- 切换数…

iMazing 2.17.10官方中文版含2023最新激活许可证码

iMazing 2.17.10官方中文版是一款iOS设备管理软件&#xff0c;该软件支持对基于iOS系统的设备进行数据传输与备份&#xff0c;用户可以将包括&#xff1a;照片、音乐、铃声、视频、电子书及通讯录等在内的众多信息在Windows/Mac电脑中传输/备份/管理。 iMazing 2.17.10官方中文…

多层神经网络和激活函数

多层神经网络的结构 多层神经网络就是由单层神经网络进行叠加之后得到的&#xff0c;所以就形成了层的概念&#xff0c;常见的多层神经网络有如下结构&#xff1a; 1&#xff09;输入层&#xff08;Input layer&#xff09;&#xff0c;众多神经元&#xff08;Neuron&#xff…

【多线程进阶】死锁问题

文章目录 前言1. 什么是死锁1.1 死锁的三种典型情况 2. 死锁产生的必要条件3.如何解决死锁问题总结 前言 上文锁策略中, 当谈到可重入锁和不可重入锁时, 我们引入了一个 “死锁” 的概念, 当针对一把不可重入锁进行连续两次的加锁行为时, 就会产生死锁. 本文就重点来讲解一下…

【自动化测试】测试开发工具大合集

收集和整理各种测试工具&#xff0c;自动化测试工具&#xff0c;自动化测试框架&#xff0c;觉得有帮助记得三连一下。 欢迎提交各类测试工具到本博客。 通用测试框架 JUnit: 最著名的xUnit类的单元测试框架&#xff0c;但是不仅仅可以做单元测试。TestNG: 更强大的Java测试框…

深度学习(3)---PyTorch中的张量

文章目录 一、张量简介与创建1.1 简介1.2 张量的创建 二、张量的操作2.1 张量的拼接与切分2.2 张量索引 三、张量的数学运算 一、张量简介与创建 1.1 简介 1. 张量是一个多维数组&#xff0c;它是标量、向量、矩阵的高维拓展。 2. 在张量的定义中&#xff0c;方括号用于表示张…

基于j2ee的交通管理信息系统/交通管理系统

摘 要 随着当今社会的发展&#xff0c;时代的进步&#xff0c;各行各业也在发生着变化&#xff0c;比如交通管理这一方面&#xff0c;利用网络已经逐步进入人们的生活。传统的交通管理&#xff0c;都是工作人员线下手工统计&#xff0c;这种传统方式局限性比较大且花费较多。计…

Windows下Tensorflow docker python开发环境搭建

前置条件 windows10 更新到较新的版本&#xff0c;硬件支持Hyper-V。 参考&#xff1a;https://learn.microsoft.com/zh-cn/windows/wsl/install 启用WSL 在Powershell中输入如下指令&#xff1a; dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsys…

第十七章:Java连接数据库jdbc(java和myql数据库连接)

1.进入命令行&#xff1a;输入cmd&#xff0c;以管理员身份运行 windowsr 2.登录mysql 3.创建库和表 4.使用Java命令查询数据库操作 添加包 导入包的快捷键 选择第四个 找到包的位置 导入成功 创建java项目 二&#xff1a;连接数据库&#xff1a; 第一步&#xff1a;注册驱动…

【数据结构】抽象数据类型

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f38f;数据类型 &#x1f38f;抽象数据类型 结语 &#x1f38f;数据类型 数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称. 数据类型(d…