计算机网络管理 实验4(二) SNMP报文管理信息结构SMI及其规定的ASN.1分析并使用Wireshark抓包分析sysContact的相关信息

news2025/1/12 13:24:45

⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜

✏️write in front✏️
📝个人主页:陈丹宇jmu
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
🙉联系作者🙈by QQ:813942269🐧
🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事顺意🏳️‍🌈
✉️少年不惧岁月长,彼方尚有荣光在 🏆

一、 实验目的
        捕获SNMP报文,通过报文分析进一步理解SNMP的报文结构、MIB-2树的结构、理解管理信息结构SMI及其规定的ASN.1。
二、实验内容与设计思想
        实验内容:编写代码,测试
        1、自行挑选两个网管对象,分别使用get,get-next取其值。
        2、使用抓包软件抓取数据包。
        3、分析并验证SNMP协议数据:
        1)SNMP协议的工作过程;
        2)SNMP协议数据单元的格式;
        3)MIB-2树的结构;
        4)管理信息结构SMI及其规定的ASN.1。
三、实验要求
        1、管理站与代理为不同机器。共有4个数据包:2个对象(分别用get、get-next)*2个包(request,response)=4个。
        2、要分析其SNMP结构,指出语法定义、编码依据。对于后面的数据包,只要对新出现的结构类型进行分析即可,不需要重复分析。
        3、独立完成分析工作。
        4、撰写实验报告,给出实验小结,问题分析。实验课后5天提交。


📋笔记目录

🧩SNMP报文管理信息结构SMI及其规定的ASN.1分析

🌸抓包分析sysContact的相关信息

Get—request报文字段分析:

 Get—response报文分析:

 sysContact实例对象传回的值为的原因分析

 Get—next—request报文分析

响应Get—Next--Request的Get—response报文分析


🧩SNMP报文管理信息结构SMI及其规定的ASN.1分析

报文分析:

根据TLV中T的编码规则,解释下图SNMP协议中version的编码依据。

🌸抓包分析sysContact的相关信息

"sysContact" 是SNMP(Simple Network Management Protocol)协议中的一个OID(Object Identifier)对象,用于获取网络设备的系统管理员联系信息(例如名称、电子邮件地址、电话号码等)。

Get—request报文字段分析:


捕获的报文如下:

具体的字段解析如下:

version-10)的字段分析如下所示:

version-1(0)的BER编码为02 01 00,TLV分析:

1. T:【00(UNIVERSAL)+0(简单类型)+00010(INTEGER类型)】,即0000 0010B,02H。

依据:RFC1157文档中version的ASN.1语法:

                             INTEGER {

                                 version-1(0)

                             },

2. L:值的长度为1个字节,即01H。

3. V:值为0,即00H。

Community字段的分析如下所示

Community 的BER编码为04 06 63 64 79 30 37 37,对应着我的姓名的缩写和学号的后三位的ASDII码值。

TLV分析:

1. T:【00(UNIVERSAL)+0(简单类型)+00100(OCTET STRING类型)】,即0000 0100B,04H。

依据:RFC1157文档中version的ASN.1语法:

2. L:值的长度为6个字节,即06H。

3. V:值为cdy077,即63 64 79 30 37 37H。

依据:RFC1157文档中Get--Request的ASN.1语法:

1Get--Request的标签为上下文专用标签,因此前两位(标签)为10

2)类型为SEQUENCE,是构造类型,因此第三位类型值为1

3“[0]”表示标签值为0,因此后五位为00000

具体定义如下图所示:

在介绍SNMP协议的六种PDU类型之前,这里先给出一些经常使用的ASN.1结构,这些结构将频繁出现在PDU报文的结构定义中:

Get—request PDU字段的分析:

T      L     V(get-request)【10(CONTEXT SPECIFIC)+1(构造类型)+00000[0]】
2.    a0   19   T     L     V(request-id)【00(UNIVERSAL)+0+00010(INTERGER类)】

                     02   01   1

3.                  T     L     V(error-status)【00(UNIVERSAL)+0+00010(INTERGER类)】

                     02   01   noError(0)

4.                  T     L     V(error-index)【00(UNIVERSAL)+0(简单)+00010(INTEGER类)】

                     02   01   0

5.                  T     L     V(variable-bindings)【00+0+10000(SEQUENCE类)】

6.                  30   0c   T     L     V (Object Name) 【00+0+00110(OBECT IDENTIFIER类)】

                                   06   08   1.3.6.1.2.1.1.4.0(OID)

7.                                T     L     V(Value)【00(UNIVERSAL)+0(简单)+00101(NULL类)】

                                   05          NULL

各结构的字段在文档中的定义如下:

  • request-id,属于INTEGER类型。

  • error-status,属于INTEGER类型,其定义了6种返回的状态用于确认对端与本端的连接状态。

  • error-index,属于INTEFER类型

  • variable-bindings

其中定义了Object Name和Value,要根据具体的响应数据相应的变化其数据类型。

 Get—response报文分析:


 

答:

Get—responseBER编码为a2 2c 以及对应的值,TLV分析:

依据:RFC1157文档中Get—response的ASN.1语法:

1Get--Request的标签为上下文专用标签,因此前两位(标签)为10

2)类型为SEQUENCE,是构造类型,因此第三位类型值为1

3“[0]”表示标签值为2,因此后五位为00010

Get—response的T为10 1 00010

具体定义如下图所示:

 Get—response的request-id,error-status,error-index字段的分析类似于Get—request中的表示一样,这里就不赘述了。值得注意点是  variable-bindings中从代理系统返回的值是有传回具体的含义的,下面展开分析variable-bindings的要访问信息传回的值:

如下图所示:
这里所要请求的管理对象为sysContact,OID为:.1.3.6.1.2.1.1.4,实例标识符为:.1.3.6.1.2.1.1.4.0,所要请求的信息为------这个托管节点的联系人的文本标识,以及如何联系这个人的信息。

 
通过报文可以看出,该实例对象传回的值为<MISSING>
TLV分析如下:

04 00T00(UNIVERSAL)+0(简单类型)+00100(OCTET STRING类型)

 sysContact实例对象传回的值为<MISSING>的原因分析


针对:SNMP服务OID对象.1.3.6.1.2.1.1.4.0 传回的值为MISSING 的原因分析:

如果SNMP服务OID对象.1.3.6.1.2.1.1.4.0(sysContact)传回的值为MISSING,很可能是由于该OID对象的值丢失或无法访问。这个OID对象通常用于获取系统管理员的联系信息,例如电话号码和电子邮件地址等。

经过分析,需要在代理系统的SNMP服务中添加对应的联系人和位置的代理信息,该实例对象才可以返回出信息。

成功获取到了值为zxr的管理信息,zxr对应的ASCII为7a 78 72。

 Get—next—request报文分析

答:

Get—next--requestBER编码为a1 19 以及对应的值,TLV分析:

依据:RFC1157文档中Get—next--request的ASN.1语法:

1Get—next--Request的标签为上下文专用标签,因此前两位(标签)为10

2)类型为SEQUENCE,是构造类型,因此第三位类型值为1

3“[0]”表示标签值为1,因此后五位为00001

Get—response的T为10 1 00001

具体定义如下图所示:

响应Get—Next--Request的Get—response报文分析


GetNextRequest-PDU 是一种SNMP协议的操作指令,用于请求网络设备或代理返回MIB(Management Information Base)树中下一个变量的值,并且可以用于指定多个后继变量。该操作通常被用于通过遍历整个MIB树来获取网络设备的所有状态信息。

查看MIB树,sysContact(.1.3.6.1.2.1.1.4.0)下一个实例对象为sysName(.1.3.6.1.2.1.1.5.0),所以在sysContact(.1.3.6.1.2.1.1.4.0)的状态下向代理系统发送GetNextRequest报文,代理系统会返回sysName(.1.3.6.1.2.1.1.5.0)实例对象的信息。

答:

Get—responseBER编码为a2 1e 以及对应的值,TLV分析:

依据:RFC1157文档中Get—response的ASN.1语法:

1Get--respond的标签为上下文专用标签,因此前两位(标签)为10

2)类型为SEQUENCE,是构造类型,因此第三位类型值为1

3“[0]”表示标签值为2,因此后五位为00010

Get—response的T为10 1 00010

具体定义如下图所示:

Get—response的request-id,error-status,error-index字段的分析类似于Get—request中的表示一样,这里就不赘述了。值得注意点是  variable-bindings中从代理系统返回的值是有传回具体的含义的,下面展开分析variable-bindings的要访问信息传回的值:

如下图所示:

这里所要请求的管理对象为sysName,OID为:.1.3.6.1.2.1.1.5,实例标识符为:.1.3.6.1.2.1.1.5.0,所要请求的信息为------SNMP .1.3.6.1.2.1.1.5.0 对应的是sysName MIB对象,它表示管理节点的名称,通常是一个完全限定的域名,并且可以用于标识发送SNMP traps的设备。
 

 通过报文可以看出,该实例对象传回的值为

TLV分析如下:

04 05T00(UNIVERSAL)+0(简单类型)+00100(OCTET STRING类型)

variable-bindings的值为LeeKK – ASCII编码为4C 65 65 6b 6b

值的含义为该管理设备的设备名称为LeeKK。

 

 🚩结尾


🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
🌈写给读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事顺意🏳️‍🌈

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

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

相关文章

关系数据库SQL数据查询

关系数据库SQL数据查询 数据查询 一、单表查询 1.查询仅涉及一个表&#xff0c;选择表中的若干列 [例1] 查询全体学生的学号与姓名。SELECT Sno,SnameFROM Student; [例2] 查询全体学生的姓名、学号、所在系。SELECT Sname,Sno,SdeptFROM Student;查询全部列 选出所有属…

python代码实现生成二维码

二维码结构&#xff1a; 从图中我们可以看出二维码结构整体划分为功能图形和编码区两大部分&#xff0c;功能图形又细分为&#xff1a;空白区、位置探测图形、位置探测图形分隔符、定位图形、校正图形&#xff0c;而编码区细分为&#xff1a;格式信息、版本信息、数据和纠错码字…

Flutter进阶-List数组的深浅拷贝问题

浅拷贝&#xff1a;拷贝指针深拷贝&#xff1a;拷贝一份新的对象 浅拷贝出现的问题&#xff1a;操作一个数组另一个数组也发生改变 List list [1, 2, 3, 4, 5]; List copyList list; copyList[0] abc; print(list);///打印&#xff1a; [abc,2,3,4,5] print(copyList);///打…

机器学习——博客推荐系统

前言 在当今的信息时代&#xff0c;技术博客已成为知识、见解和娱乐的重要来源。随着博客内容的日益丰富&#xff0c;找到最相关和最引人入胜的文章对用户来说可能是一项艰巨的任务。为了应对这一挑战&#xff0c;我们需要一个全面的博客推荐系统&#xff0c;利用尖端技术和机…

RabbitMQ + SpringCloud使用及避坑(大章)

RabbitMQ 的开发语言是Erlang&#xff0c;它的源码阅读起来学习成本太高了&#xff0c;所以这里就不详细看了&#xff0c;本次主要是结合springCloud 的项目来真正使用RabbitMQ 的几种交换器&#xff0c;还有一些业务场景的模拟&#xff0c;最主要的还是避坑。 为什么说是避坑…

JavaSE进阶--玩转IO流

文章目录 前言一、File类介绍1、概念引入2、实际应用2.1 操作文件2.2 操作文件夹 二、IO流介绍三、字符流1、读文件1.1 一次读一个1.2 一次读多个&#xff0c;使用char数组去装 2、写文件2.1 一次写一个2.2 一次写完&#xff0c;使用字符数组 3、文件复制3.1 综合应用3.2 使用缓…

ESP32(MicroPython)LVGL输入字符显示到OLED屏幕

本程序用于输入字符显示到OLED屏幕&#xff08;按回车键输出字符到屏幕&#xff09;&#xff0c;依次输出六行字符&#xff0c;再按回车会清空屏幕并从第一行开始输出。 代码如下 import lvgl as lv import time from espidf import VSPI_HOST from ili9XXX import ili9341…

模拟随机验证码

网拷一篇中英文文本&#xff0c;去除标点空格作为验证码字符集。 (本笔记适合对 python 的随机模块有一定了解的的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&a…

如何在IDEA上实现JDBC编程

&#x1f495;人生在世&#xff0c;不如意事常八九&#xff0c;若把烦恼全都写在纸上&#xff0c;时间长了纸也会烦。所以&#xff0c;没事的时候给自己多一些微笑&#xff0c;少一些烦恼。&#x1f495; &#x1f43c;作者&#xff1a;不能再留遗憾了&#x1f43c; &#x1f3…

【备战秋招】每日一题:4月23日美团春招第二题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检&#xff0c;为了更好的阅读体检&#xff0c;&#xff0c;可以查看我的算法学习博客第二题-制作骰子 在线评测链接:P1246 题目内容 塔子哥是一个喜欢手工制作的人&#xff0c;他经常用各种材料制作一些有趣的物品。他最近想要制作一个骰子&#xff0c;但是…

Oracle11gRAC安装JVM组件

目录&#xff1a; 安装前检查&#xff1a;安装JVM组件&#xff1a;方式一&#xff08;图形化安装&#xff09;方式二&#xff08;执行脚本安装&#xff09; 检查DB JVM状态脚本 安装前检查&#xff1a; 检查角色&#xff1a; select * from dba_roles where ROLE in (JAVAIDP…

分布式安装配置spark-3.2.3

Spark是一个基于内存的大数据计算框架&#xff0c;可以与Hadoop集成&#xff0c;提供更快速的数据处理能力。本文将介绍如何在三个Ubuntu系统上搭建一个Spark集群。 主要步骤包括&#xff1a; 准备工作&#xff1a;下载安装包&#xff0c;设置环境变量&#xff0c;解压安装包…

基于Elasticsearch与Hbase组合框架的大数据搜索引擎

本项目为学校大数据工程实训项目&#xff0c;共开发4周&#xff0c;答辩成绩不错。代码仓库放文章尾&#xff0c;写的不好&#xff0c;代码仅供参考。 搜索 对于结构化数据&#xff0c;因为它们具有特定的结构&#xff0c;所以我们一般都是可以通过关系型数据库&#xff08;M…

【读书笔记】《房思琪的初恋乐园》- 林奕含

文章目录 第一章 乐园第二章 失乐园 第一章 乐园 钱爷爷说&#xff1a;“两个小美女有心事啊&#xff1f;”怡婷最恨人家叫她们两个小美女&#xff0c;她很这种算术上的好心。 在外人看来&#xff0c;女生无论长得漂亮还是长得不怎么样都是一种原罪。或者正如上野千鹤子所说那样…

pocketgl

pocketgl支持在自己的web页面集成类似 Shadertoy、 Threejs 等基于webGL 的渲染图形窗口&#xff0c; 并且拥有shader代码高亮编辑器支持实时修改和预览。 其自带的mesh包含两个Sphere 和 Teaport, 同时支持上床自定义的网格 和 背景天空盒。其既支持像Shadertoy 这种只包含fra…

[元带你学: eMMC协议详解 13] 数据读(Read) 写(Write) 详解

依JEDEC eMMC 5.1及经验辛苦整理&#xff0c;付费内容&#xff0c;禁止转载。 所在专栏 《元带你学: eMMC协议详解》 内容摘要 全文 4700字&#xff0c; 主要内容 1. 数据读取 2. 块读取操作 3. 数据写 4.块写操作 参考 1. 数据读取 当没有数据传输时&#xff0c;DATO-D…

Python使用happybase写入HBase

HBase是一个分布式的、面向列的NoSQL数据库&#xff0c;可以存储大量的非结构化或半结构化的数据。tif是一种常见的影像文件格式&#xff0c;可以存储多波段的栅格数据。本文将介绍如何使用Python的happybase模块和gdal模块&#xff0c;从tif格式的影像文件中读取数据&#xff…

排序算法的奇妙冒险

排序算法的奇妙冒险 一.排序的概念1.1 排序的定义1.2 排序的稳定性1.3 排序的内排序和外排序 二.插入排序2.1 直接插入排序2.2 希尔排序 三.选择排序3.1直接选择排序3.2 堆排序 四.交换排序4.1 冒泡排序4.2 快速排序**选取基准值的方法**快速排序的优化非递归实现快速排序 五.归…

Web3简述MetaMask并演示谷歌安装MetaMask扩展程序方式

Web3到现在理论这段是说的有点太多了 那么 我们先来看个东西 叫 MetaMask 这个在我们项目开发过程中需要使用 其实 你如果去找MetaMask 可能会被一些关键字下到 可能会看到 虚假 诈骗等关键字 因为 这个东西本事就是一个开源的以太坊的一个钱包 那么 钱包肯定就是用来管理资产…

LoadDef python工具包学习一:计算love数

首先在github下载这个工具箱&#xff1a;https://github.com/hrmartens/LoadDef 下载完毕&#xff0c;解压缩进入如下的界面&#xff0c;点击进入working工作文件夹。在doc文件夹里面有帮助文档和教程&#xff0c;有需要的可以仔细阅读。 loaddef主要的功能模块包括&#xff1…