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

news2024/11/17 10:00:55

一,试验环境搭建

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.coloradmin.cn/o/1060204.html

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

相关文章

基于SSM的宿舍管理系统

基于SSM的学生宿舍管理系统的设计与实现,前后端分离 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 系统主要分学生和管理员两个角色,功能有…

RSA攻击:模数分解

目录 一、模数分解总览 1.1直接分解法 1.2费马分解与Pollard_rho分解 1.3公约数分解 1.4其他模数分解 二、实战特训 2.1[黑盾杯 2020]Factor 2.2[GWCTF 2019]babyRSA 2.3[LitCTF 2023]yafu (中级) 2.4[RoarCTF 2019]RSA 2.5[CISCN 2022 西南]rsa 三、总结 一、模数分解总览 …

进程调度的时机,切换与过程以及方式

1.进程调度的时机 进程调度(低级调度〉,就是按照某种算法从就绪队列中选择一个进程为其分配处理机。 1.需要进行进程调度与切换的情况 1.当前运行的进程主动放弃处理机 进程正常终止运行过程中发生异常而终止进程主动请求阻塞(如等待l/O)…

(粗糙的笔记)动态规划

动态规划算法框架: 问题结构分析递推关系建立自底向上计算最优方案追踪 背包问题 输入: n n n个商品组成的集合 O O O,每个商品有两个属性 v i v_i vi​和 p i p_i pi​,分别表示体积和价格背包容量 C C C 输出: …

【C语言】函数的定义、传参与调用(二)

💗个人主页💗 ⭐个人专栏——C语言初步学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读: 1. 函数的嵌套调用 1.1 什么是嵌套调用 1.2 基础实现 1.3 调用流程解析 2. 函数的链式访问 2.1 …

算法通过村第十二关-字符串|青铜笔记|隐形的王者

文章目录 前言转换成小写字母字符串转换整数总结 前言 提示:为别人而活着,其实是最简单的一种活法。 --蔡崇达《命运》 字符串本身并不是一种数据结构,但是由于其本身的特殊性,额可以产生很多特殊的算法问题。另外,字符…

Java之并发工具类的详细解析

3. 并发工具类 3.1 并发工具类-Hashtable Hashtable出现的原因 : 在集合类中HashMap是比较常用的集合对象,但是HashMap是线程不安全的(多线程环境下可能会存在问题)。为了保证数据的安全性我们可以使用Hashtable,但是Hashtable的效率低下。 代码实现 …

数据源报表

1.新建报表 2.新建数据集 3.维护数据源 支持的数据库还是蛮多哈 4.选择数据源表 5.编写sql 编码:SQL数据集的标识 注:避免特殊字符和_名称:SQL数据集的名称是否集合:否为单数据;是为多数据列表,如果多条数据…

MapStruct初窥门径

一、介绍 MapStruct相比于BeanUtils性能更高&#xff0c;能够实现DO&#xff0c;DTO&#xff0c;VO之间的转换&#xff0c;达到解耦合的目的 二、使用前提 添加依赖 <dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifa…

第八章 Linux文件系统权限

目录 8.1 文件的一般权限 1.修改文件或目录的权限---chmod命令 2.对于文件和目录&#xff0c;r&#xff0c;w&#xff0c;x有不同的作用&#xff1a; 3.修改文件或目录的所属主和组---chown,chgrp 8.2 文件和目录的特殊权限 三种通过字符描述文件权限 8.3 ACL 权限 1.A…

基于Java的药店管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

1500*A. Boredom(DP)

Problem - 455A - Codeforces Boredom - 洛谷 解析&#xff1a; 首先统计每个数的个数&#xff0c;并且统计出最大值mx。 问题转换为&#xff0c;从1-mx 中选择任意个数字&#xff0c;使其都不相邻&#xff0c;求最大的总和。 开始没有思路&#xff0c;以为直接选取偶数位和奇…

项目进展(七)-焊接ADS1285及其外围电路,学习芯片的SPI部分

一、焊接芯片及其外围电路 总体焊接过程没有出现什么大问题&#xff0c;也算顺利&#xff0c;下一步主要是根据SPI来编写代码&#xff0c;配置该芯片。 焊接之后的PCB如下(手工焊接&#xff0c;比较丑陋&#xff0c;哈哈哈哈) 之后测试了4.096V参考电压和晶振输出&#xff0c…

CART算法解密:从原理到Python实现

目录 一、简介CART算法的背景例子&#xff1a;医疗诊断 应用场景例子&#xff1a;金融风控 定义与组成例子&#xff1a;电子邮件分类 二、决策树基础什么是决策树例子&#xff1a;天气预测 如何构建简单的决策树例子&#xff1a;动物分类 决策树算法的类型例子&#xff1a;垃圾…

长时序栅格数据缺失值插补

长时序栅格数据经常会出现一些缺失值&#xff0c;会对后续的分析造成很大的不便。这便需要利用一些插值算法对这些缺失数据进行填补&#xff0c;奇异谱分析&#xff08;SSA&#xff09;便是常用的一种插值方法。更多内容可见公众号GeodataAnalysis。 简介 在时间序列分析中&a…

处理机调度的概念,层次联系以及七状态模型

1.基本概念 当有一堆任务要处理&#xff0c;但由于资源有限&#xff0c;这些事情没法同时处理。 这就需要确定某种规则来决定处理这些任务的顺序&#xff0c;这就是“调度”研究的问题。 2. 三个层次 1.高级调度&#xff08;作业调度&#xff09; 高级调度&#xff08;作业…

websocket逆向【python实现websocket拦截】

python实现websocket拦截 前言一、拦截的优缺点优点:缺点:二、实现方法1.环境配置2.代码三、总结前言 开发者工具F12,筛选ws后,websocket的消息是这样显示的,如何获取这里面的消息呢? 以下是本篇文章正文内容 一、拦截的优缺点 主要讲解一下websocket拦截的实现,现在…

结构和基本尺寸

声明 本文是学习GB-T 586-2015 船用法兰铸钢止回阀. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了法兰连接尺寸和密封面按 CB/T 4196、GB/T 2501 的船用法兰铸钢止回阀(以下简 称止回阀)的分类和标记、要求、试验方法、检验规…

sheng的学习笔记-【中英】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第四周测验

课程1_第4周_测验题 目录&#xff1a;目录 第一题 1.在我们的前向传播和后向传播实现中使用的 “缓存” 是什么&#xff1f; A. 【  】它用于在训练期间缓存成本函数的中间值。 B. 【  】我们用它将在正向传播过程中计算的变量传递到相应的反向传播步骤。它包含了反向传…

Linux系统编程系列之条件变量

一、什么是条件变量 条件变量是一种同步互斥机制&#xff0c;通常与互斥锁一起使用以实现线程之间的通信和同步。 二、问题的引入 先来看一个例子:小楠是一名在校学生&#xff0c;每个月都会从父母那里得到一笔生活费。现在她的钱花光了&#xff0c;想要去取钱。但是很显然取钱…