snmp报文分析报告

合集下载

实验2SNMP网络管理报文信息解析

实验2SNMP网络管理报文信息解析

实验2 SNMP网络管理报文信息解析1. 实验目的学习使用Ethereal查看和了解SNMP的交互过程✓了解SNMPv1的Get命令。

✓了解SNMPv1的GetNext命令。

✓了解SNMPv2的GetBulk命令。

2. 实验要求1.独立完成实验内容;2.实验报告;(简单要求如下)1)各实验操作步骤;2)回答实验中提出的问题3)实验结论及分析3. 实验内容3.1 实验环境window操作系统,MIB Browser,Ethereal学生机进行配置:修改本地连接2的ip地址:Ip:192.168.3.1~253(小组内的每台机ip必须不同)Netmask:255.255.255.0Gateway:192.168.3.254配置静态路由:单击开始——运行——cmd在命令提示符中输入Route –p add 192.168.0.0 mask 255.255.0.0 192.168.3.254修改MIB Browser的环境变量:编辑C:\Program Files\AdventNet\SNMPAPI\bin\setallEnv.bat的JAVA_HOME变量的值为jdk的安装目录:set JAVA_HOME=C:\"Program Files"\Java\jdk1.5.0启动C:\Program Files\AdventNet\SNMPAPI\MibBrowser\MibBrowser.bat以及桌面的EtherealMIB Browser配置:Host填写路由器的地址,Community填写路由器的团体名,可以填写Host:192.168.2.5 community:r1 或者Host:192.168.2.6 community:r2Ethereal配置;选择使用的网卡:Capture——options——interface:选择NetLink(TM)那个网卡基本操作:Capture——start:开始抓包,开始抓包后点击stop即停止抓包在Ethereal的主界面,Filter文本框内填入关键词可进行过滤(如填入SNMP)实验过程中可通过保存数据(保存的数据可通过Ethereal再打开)或者截图等方式记录3.2使用Ethereal了解SNMP的交互过程3.2.1 SNMPv1 里面有哪几种操作?3.2.2 用Ethereal抓包,MIB Browser使用Get操作读取sysName,问request的object ID是什么,response的object ID是什么,值是什么?3.2.3 用Ethereal抓包,MIB Browser使用GetNext操作读取sysName (MIB Browser里面的Object ID以.0结尾),问request的object ID是什么,response的object ID是什么,值是什么?3.2.4 用Ethereal抓包,MIB Browser使用GetNext操作读取sysName (MIB Browser里面的Object ID结尾去掉.0),问request的object ID是什么,response的object ID是什么,值是什么?3.2.5 用Ethereal抓包,MIB Browser使用Get操作读取sysName.5 实例,response的值是什么?如果使用GetNext操作值是什么?3.2.6 用Ethereal抓包,MIB Browser使用GetNext操作从ifTable里面的ifIndex开始读取,请问GetNext读取表格的方式是先列后行还是先行后列?(GetNext要多点几次,10次以上。

snmp数据包分析

snmp数据包分析

snmp数据包分析今天看了⼀下snmp数据包的报⽂格式,⽤wireshark抓了两个数据包来分析。

先说说snmp get-request的书报包格式吧,get-next-request,get-response,set-request这⼏个格式都是差不多的,只是pdu类型不⼀样。

还有trap格式不⼤⼀样。

好,先说说get-request报⽂格式(参考tcp/ip详解卷⼀)。

版本 + 团体名 + pdu类型 + 请求标识 + 差错状态 + 差错索引 + 差错索引 + 名称 + 值 + 名称 + 值。

trap的也说⼀下版本 + 团体名 + pdu类型 + 企业 + 代理地址 + trap类型 + 特定代码 + 时间戳 + 名称 + 值。

okay,下⾯说⼀下我的环境主机windows xp虚拟机Vmware ubuntu,抓包⼯具wireshark,使⽤的netsnmp,主机ip210.38.235.184,虚拟机ip210.38.235.186这⾥虚拟机向主机发⼀条命令snmpget -v 1 -c public 210.38.235.184 sysDescr.0(oid为1.3.6.1.2.1.1.1.0)先来看看snmp v1版的数据包吧c8 1f 66 05 fb a6 00 0c 29 90 f7 6d 08 00 45 00 00 47 21 ba 40 00 40 11 9d 2b d2 26 eb ba d2 26 eb b8 96 f9 00 a1 00 33 8a 2d 30 29 02 01 00 04 06 70 75 62 6c 69 63 a0 1c 02 04 26 ca 2f cb 02 01 00 02 01 00 30 0e 30 0c 06 08 2b 06 01 02 01 01 01 00 05 00c8 1f 66 05 fb a6//⽬的⽹卡地址00 0c 29 90 f7 6d//源⽹卡地址08 00//协议类型,这⾥是ip协议45 00 00 47 21 ba 40 00 40 11 9d 2b d2 26 eb ba d2 26 eb b8//ip头部20个字节96 f9 00 a1 00 33 8a 2d//udp8个字节30 29//30表⽰snmp消息⽤的是asn.1 sequence 29表⽰消息长度(29后⾯的字节数)41个字节02 01 00 //这⾥采⽤的是BER(Basic encode rule)编码(第⼀个字节表⽰数据类型,第⼆个字节表⽰数据长度,后⾯为数据)02表⽰INTEGER类型,01表⽰长度为1,00表⽰版本为v104 06 70 75 62 6c 69 63//这⾥是团体名public阿斯科马,这⾥也采⽤的是BER编码a0 1c//pdu类型a0表⽰get-request 1c表⽰pdu数据长度28个字节02 04 26 ca 2f cb//request-id管理进程设置的⼀个整数02 01 00//差错状态,00表⽰没有出现差错02 01 00//差错状态索引,0030 0e//表⽰值名称采⽤的是asn.1,数据长度为14个字节30 0c//表⽰第⼀个值名称采⽤的是asn.1,数据长度为12个字节06 08 2b 06 01 02 01 01 01 00//这⾥采⽤的是BER,但是snmp,oid的编码⽅式有点怪,后⾯我会有说明05 00//snmp NULL 所以数据长度为0okay上⾯已经分析完snmp v1的数据包下⾯看看snmp v2数据包c8 1f 66 05 fb a6 00 0c 29 90 f7 6d 08 00 45 00 00 47 21 b9 40 00 40 11 9d 2c d2 26 eb ba d2 26 eb b8 a8 8d 00 a1 00 33 d1 e6 30 29 02 01 01 04 06 70 75 62 6c 69 63 a0 1c 02 04 51 5a b7 e0 02 01 00 02 01 00 30 0e 30 0c 06 08 2b 06 01 02 01 01 01 00 05 00c8 1f 66 05 fb a6 //⽬的⽹卡地址00 0c 29 90 f7 6d //源⽹卡地址这⾥应该是数据链路层封装的头部08 00 //协议类型,这⾥是ip协议45 00 00 47 21 b9 40 00 40 11 9d 2c d2 26 eb ba d2 26eb b8 //ip⾸部a8 8d 00 a1 00 33 d1 e6 //udp⾸部//下⾯是snmp报⽂30//表⽰snmp消息是asn.1 sequence类型29//29表⽰该字段后⾯还有41个字节02 01 01//最后⼀个01表⽰snmp版本为2c这⾥采⽤的是BER编码⽅式 02表⽰该字段为INTEGER类型,第⼆个01表⽰数据长度为104 06 70 75 62 6c 69 63 //这⾥是团体名称public,04表⽰数据类型为OCTET STRING类型,06表⽰数据长度为6个字节,后⾯6个为public 的阿斯科马值,但是这⾥为什么后⾯的没有采⽤这种BER编码⽅式,即数据类型+数据长度+数据类容a0 1c //a0表⽰报⽂类型为get-request,1c表⽰后⾯还有28个字节的数据,这⾥为什么没有采⽤BER编码⽅式?这⾥除了类型字段外,其他的都采⽤BER编码⽅式02 04 51 5a b7 e0 //request ID这是由管理进程设置的⼀个整数这是由管理进程设置的⼀个整数值。

SNMP协议工作原理验证与分析

SNMP协议工作原理验证与分析

计算机网络管理技术实验报告
①、从天空教室-网络协议分析的课程资源下载Sniffer学习手册。

阅读Sniffer 学习手册,掌握设置过滤器和捕获数据包的基本方法。

②、分别运行软件Sniffer和MIB浏览器;
③、首先设置Sniffer中捕获报文的过滤条件,将其设置为只捕获管理站和代理之间的SNMP报文。

④、点击Sniffer中工具栏的start capture,开始捕获SNMP报文;
⑤、用MIB浏览器MibBrowser访问另一台计算机(非本机)或路由器的MIB被管对象。

⑥、单击“Stop and Display ”按钮,停止抓包,单击窗口左下角“Decode ”选项,
观察并分析所捕获的数据。

⑦、在捕获的报文中找出一对Snmp 请求和响应报文,如Get request 和Get
response 、GetNext request 和Get response 或Set request 和Get response 。

★ 提交Get 报文截图和Get response 报文截图,截图内容包括IP 首部、UDP 首
部、
:
IP 首部
UDP 首部
SNMP 首部
IP 首部 UDP 首部
SNMP 首部
BER 编码格式的SNMP 报文
★根据上述报文对的内容填写下表。

实验结束!!。

snmp报文字段分析

snmp报文字段分析

SNMP五种协议数据单元SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。

∙get-request操作:从代理进程处提取一个或多个参数值(网管系统发送)∙get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值(网管系统发送)∙set-request操作:设置代理进程的一个或多个参数值(网管系统发送)∙get-response操作:返回的一个或多个参数值。

这个操作是由代理进程发出的,它是前面三种操作的响应操作(代理发送)∙trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生(代理发送)前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作叫做get、get-next和set操作。

下图描述了SNMP的这5种报文操作。

请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。

SNMP的5种报文操作SNMP协议数据单元格式解析下图封装成UDP数据报的5种操作的SNMP报文格式。

可见一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部trap首部、变量绑定。

SNMP报文格式1. 公共SNMP首部1.1 版本写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。

1.2 公共体共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。

1.3 PDU类型根据PDU的类型,填入0~4中的一个数字,其对应关系下表所示意图。

表1 PDU类型2. get/set首部2.1 请求标识符(request ID)这是由管理进程设置的一个整数值。

代理进程在发送get-response报文时也要返回此请求标识符。

管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。

snmp报文解析详细讲解

snmp报文解析详细讲解

0020 10 af 0a ed 00 a1 00 30 5c 8c 30 26 02 01 00 04 .....0\.0&....
0030 06 70 75 62 6c 69 63 a1 19 02 02 00 99 02 01 00 .public......... 0040 02 01 00 30 0d 30 0b 06 07 2b 06 01 02 01 01 01 ...0.0...+...... 0050 05 00
0000 50 78 4c 70 c3 e3 00 0d 87 cb d9 d8 08 00 45 00 PxLp..........E.
0020 10 af 0a ed 00 a1 00 30 5c 8c 30 26 02 01 00 04 .....0\.0&....
0030 06 70 75 62 6c 69 63 a1 19 02 02 00 99 02 01 00 .public......... 0040 02 01 00 30 0d 30 0b 06 07 2b 06 01 02 01 01 01 ...0.0...+...... 0050 05 00
= (38 )10
SNMP报文02 01 00 表示版本号 解析
为SNMPv1(0)
0000 50 78 4c 70 c3 e3 00 0d 87 cb d9 d8 08 00 45 00 PxLp..........E.
0010 44 a7 4a 00 00 80 11 5e 8d 0a 0a 10 0f 0a 0a .D.J....^.......
T L V
0 0 0
0 0 0
0 0 0
0 0 0

SNMPTRAP报文解析

SNMPTRAP报文解析

SNMPTRAP报⽂解析转载地址: https:///eric_sunah/article/details/19557683SNMP的报⽂格式SNMP代理和管理站通过SNMP协议中的标准消息进⾏通信,每个消息都是⼀个单独的数据报。

SNMP使⽤UDP(⽤户数据报协议)作为第四层协议(传输协议),进⾏⽆连接操作。

SNMP消息报⽂包含两个部分:SNMP报头和协议数据单元PDU。

在实际⽹络传输环境下,SNMP报⽂的长度取决于其所采⽤的编码⽅式。

SNMP统⼀采⽤BER(Basic Encoding Rule)的编码规则,同时在正式SNMP规范中使⽤的是ASN.1语法,AbastractSyntax Notation v1,即抽象语法描述语⾔。

这两个概念在后⾯实践环节再做进⼀步介绍,这⾥只要稍微了解⼀下即可,不妨碍我们对协议本⾝的分析。

这⾥我们简单解释⼀下BER编码规则:BER作为ANS.1的基本编码规则,描述具体的ANS.1对象如何编码为⽐特流在⽹络上进⾏传输。

BER编码规则由三部分组成:SNMP中定义了⼏种基本的数据类型,其中v1和v2版有些改动,具体参见相应的RFC⽂档。

这⾥我们只介绍⼏种最常见的类型:l INTEGER:⼀个整数l OCTER STRING: 0或多个8bit字节,每个字节在0~255之间取值l DisplayString:0或多个8bit字节,每个字节必须是ASCII码。

在MIB-II中,所有该类型变量不能超过255个字符(0个字符可以)l NULL:代表相关的变量没有值l IpAddress:4字节长的OCTER STRING,以⽹络字节序表⽰IP地址l PhyAddress:6字节长的OCTER STRING,代表物理地址l Counter:⾮负整数,可以从0递增到232-1()。

达到最⼤值后归0l TimeTicks:时间计数器,以0.01秒为单位递增,不同的变量可以有不同的递增幅度。

snmp报文分析报告

snmp报文分析报告

SNMP报文格式分析1.SNMP报文格式1.1 snmp简介1.1.1 snmp工作原理SNMP采用特殊的客户机/服务器模式,即代理/管理站模型。

对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。

每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。

管理站和代理端使用MIB进行接口统一,MIB定义了设备中的被管理对象。

管理站和代理都实现相应的MIB对象,使得双方可以识别对方的数据,实现通信。

管理站向代理请求MIB中定义的数据,代理端识别后,将管理设备提供的相关状态或参数等数据转换成MIB定义的格式,最后将该信息返回给管理站,完成一次管理操作。

1.1.2 snmp报文类型SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap 。

1.Get-Request 、Get-Next-Request与Get-ResponseSNMP 管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。

Get-Next- Request用于和Get-Request 组合起来查询特定的表对象中的列元素。

2.Set-RequestSNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。

3.TrapSNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生,如接口UP/DOWN,IP地址更改等。

上面五种消息中Get-Request、Get-Next-Request和Set-Request是由管理站发送到代理侧的161端口的;后面两种Get-Response和Trap 是由代理进程发给管理进程的,其中Trap消息被发送到管理进程的162端口,所有数据都是走UDP 封装。

SNMP学习笔记之SNMP报文以及不同版本(SNMPv1、v2c、v3)的区别

SNMP学习笔记之SNMP报文以及不同版本(SNMPv1、v2c、v3)的区别

SNMP学习笔记之SNMP报⽂以及不同版本(SNMPv1、v2c、v3)的区别本篇⽂章将重点分析SNMP报⽂,并对不同版本(SNMPv1、v2c、v3)进⾏区别!四、SNMP协议数据单元在SNMP管理中,管理站(NMS)和代理(Agent)之间交换的管理信息构成了SNMP报⽂,报⽂的基本格式如下图1:图 1SNMP主要有SNMPv1、SNMPV2c、SNMPv3⼏种最常⽤的版本。

1、SNMPv1SNMPv1是SNMP协议的最初版本,提供最⼩限度的⽹络管理功能。

SNMPv1的SMI和MIB都⽐较简单,且存在较多安全缺陷。

SNMPv1采⽤团体名认证。

团体名的作⽤类似于密码,⽤来限制NMS对Agent的访问。

如果SNMP报⽂携带的团体名没有得到NMS/Agent的认可,该报⽂将被丢弃。

报⽂格式如下图2:图 2从上图可以看出,SNMP消息主要由Version、Community、SNMP PDU⼏部分构成。

其中,报⽂中的主要字段定义如下:Version:SNMP版本Community:团体名,⽤于Agent与NMS之间的认证。

团体名有可读和可写两种,如果是执⾏Get、GetNext操作,则采⽤可读团体名进⾏认证;如果是执⾏Set操作,则采⽤可写团体名进⾏认证。

Request ID:⽤于匹配请求和响应,SNMP给每个请求分配全局唯⼀的ID。

Error status:⽤于表⽰在处理请求时出现的状况,包括noError、tooBig、noSuchName、badValue、readOnly、genErr。

Error index:差错索引。

当出现异常情况时,提供变量绑定列表(Variable bindings)中导致异常的变量的信息。

Variable bindings:变量绑定列表,由变量名和变量值对组成。

enterprise:Trap源(⽣成Trap信息的设备)的类型。

Agent addr:Trap源的地址。

SNMP报文分析

SNMP报文分析

SNMP报文分析一、SNMP协议环境的配置1、主机SNMP协议配置操作系统:Windows10虚拟MAC地址:00-50-56-C0-00-08IP地址:192.168.40.11)安装SNMP协议依次打开控制面板程序程序和功能启用或关闭Windows功能,找到“简单的网络管理协议(SNMP)”并将其勾选,然后确定就可以安装了。

2)配置并打开SNMP Service服务右键计算机,依次打开管理服务和应用程序服务,在右侧找到SNMP Service 服务,双击开启服务,并在安全选项卡中进行如下配置:2、目标机SNMP协议配置操作系统:虚拟机Windows7MAC地址:00-0C-29-17-A1-58IP地址:192.168.40.130虚拟机Windows7安装SNMP方法,启用SNMP服务和主机Windows10一样,按照上边的步骤即可。

二、SNMP协议报文的抓取1、下载并安装snmputil.exe和wireshark由于wireshark是之前就已经下载并安装好的,所以这里了就不做截图。

2、发送并抓取SNMP数据包1)首先打开wireshark,由于这里用的是虚拟机,所以就要找到虚拟机所使用的网卡,双击便开始抓包了。

2)利用snmputil工具发送snmp数据包,在命令提示符中找到snmputil,然后运行如下的命令。

关于snmputil.exe工具的使用:I.snmputil命令解释:snmputil 是程序名get 可以理解为获取一个信息getnext 可以理解为获取下一个信息walk 是所有数据库子树/子目录的信息agent 具体某台机器拉community 就是“community strings”“查询密码”oid 就是物件识别代码(Object Identifier)可以把oid理解为MIB管理信息库中各种信息分类存放树资源的一个数字标识。

II.snmputil的命令规则是:snmputil [get|getnext|walk] agent community oid [oid ...][get|getnext|walk]为消息类型,我们此次进行的操作是getagent指Snmp代理即你想进行操作的网络设备的ip或名称,即192.168.40.130 community:分区域,即密码,我们这里是Publicoid:想要操作的MIB数据对象号,设备名称对应的MIB对象号是.1.3.6.1.2.1.1.5.0 打开命令行窗口,进入snmputil所在路径,键入snmputil get 192.168.40.130 Public .1.3.6.1.2.1.1.5.0,如果参数都正确,控制台就会显示出机器名。

网络管理与维护课内实验报告3-SNMP报文分析

网络管理与维护课内实验报告3-SNMP报文分析

一. 实验目的1.掌握BER基本编码规则;2. 利用各种网络管理工具,完成相关SNMP操作,分析并掌握SNMP PDU结构,理解SNMP协议的工作原理。

二. 实验所需设备及材料1.局域网环境中的计算机2台(1台代理,1台管理站),2台计算机已启动SNMP服务,作为管理站的计算机安装SNMPc软件和snmputil工具;2.在某一台计算机安装网络嗅探软件。

三. 实验内容参考实验指导书P324页5.5.2节。

如图5-111所示,首先将代理一方的只读团体名、读/写团体名、trap 团体名全部修改为你的8位学号(如何添加团体名,请参考第一次实验的内容)。

然后完成以下实验:1.完成get操作,抓取get 请求报文和其响应报文(注意两个报文“request-id”一致),截图(需要截取哪些信息?请参考P327图5-114),然后对应截图分别完成两个报文的BER编码分析。

2.完成getnext操作,抓取getnext请求报文和其响应报文(注意两个报文“request-id”一致),截图,然后对应截图完成两个报文的BER编码分析。

3.完成set操作,抓取set 请求报文和其响应报文(注意两个报文“request-id”一致),截图,然后对应截图完成两个报文的BER编码分析。

4.构造一个trap,抓取trap报文,截图,然后对应截图完成该报文的BER编码分析。

5.完成SNMPv2 GetBulk操作,抓取GetBulk请求报文和响应报文(注意两个报文“request-id”一致),截图,然后对应截图完成两个报文的BER编码分析。

四.实验过程1. get操作分析●说明如何产生Get操作?答:管理站检索管理对象的管理信息库中标量对象的值,就产生一个Get操作。

●Get请求报文抓包截图与BER分析30 36 ;报文是SEQUENCE类型,长度是54个8位组02 01 00 ;SNMP版本号,类型为Integer,值为版本号-104 08 30 34 31 33 32 30 32 31 ;团体名,类型为OETCTString值为”04132021”A0 27 ;A0表示为GET操作,其后PDU长39个8位组02 01 01 ;request-id,类型为Integer,值为102 01 00 ;错误状态,类型为Integer,值为002 01 00 ;错误索引,类型为Integer,值为030 1C ;变量绑定表,类型为SEQUENCEOF,长度为2830 0C ;第一个变量绑定,类型为SEQUENCE,长度为1206 08 2B 06 01 02 01 01 03 00 ;变量为OID类型,值为.1.3.6.1.2.1.1.3.005 00 ;变量值为NULL30 0C ;第二个变量绑定,类型为SEQUENCE,长度为1206 08 2B 06 01 02 01 02 01 00 ;变量为OID类型,值为.1.3.6.1.2.1.2.1.005 00 ;变量值为NULL响应报文抓包截图与BER分析30 3a ;报文是SEQUENCE类型,长度是58个8位组02 01 00 ;SNMP版本号,类型为Integer,值为版本号-1(0)04 08 30 34 31 33 32 30 32 31 ;团体名,类型为OETCTString值为”04132021”a2 2b ;A2表示Respond,其后PDU长43个8位组02 01 01 ;request-id,类型为Integer,值为102 01 00 ;错误状态,类型为Integer,值为002 01 00 ;错误索引,类型为Integer,值为030 20 ;变量绑定表,类型为SEQUENCEOF,长度为3230 0f ;第一个变量绑定,类型为SEQUENCE,长度为1506 08 2B 06 01 02 01 01 03 00 ;变量名是OID类型,值为.1.3.6.1.2.1.1.3.0430300adf4 ;变量值为Timeticks类型,值为4453230 0d ;第二个变量绑定,类型为SEQUENCE,长度为1306 08 2B 06 01 02 01 02 01 00 ;变量为OID类型,值为.1.3.6.1.2.1.2.1.0020102 ;变量值为Integer类型,值为22. getnext操作●说明如何产生getnext操作?答:管理站向被管对象发出getnext请求●Getnext请求报文抓包截图与BER分析30 36 ;报文是SEQUENCE类型,长度是54个8位组02 01 00 ;SNMP版本号,类型为Integer,值为版本号-1(0)04 08 30 34 31 33 32 30 32 31 ;团体名,类型为OETCTString值为”04132021”a1 27 ;A1表示Getnext,其后PDU长39个8位组02 01 01 ;request-id,类型为Integer,值为102 01 00 ;错误状态,类型为Integer,值为002 01 00 ;错误索引,类型为Integer,值为030 1c ;变量绑定表,类型为SEQUENCEOF,长度为2830 0c ;第一个变量绑定,类型为SEQUENCE,长度为1206 08 2b 06 01 02 01 01 03 00 ;变量名是OID类型,值为.1.3.6.1.2.1.1.3.005 00 ;变量值为NULL30 0c ;第二个变量绑定,类型为SEQUENCE,长度为1206 08 2b 06 01 02 01 02 01 00 ;变量为OID类型,值为.1.3.6.1.2.1.2.1.005 00 ;变量值为NULL响应报文抓包截图与BER分析30 40 ;报文是SEQUENCE类型,长度是64个8位组02 01 00 ;SNMP版本号,类型为Integer,值为版本号-1(0)04 08 30 34 31 33 32 30 32 31 ;团体名,类型为OETCTString值为”04132021”a231 ;a2表示Respond,其后PDU长49个8位组02 01 01 ;request-id,类型为Integer,值为102 01 00 ;错误状态,类型为Integer,值为002 01 00 ;错误索引,类型为Integer,值为030 26 ;变量绑定表,类型为SEQUENCEOF,长度为3830 13 ;第一个变量绑定,类型为SEQUENCE,长度为1906 08 2b 06 01 02 01 01 04 00 ;变量名是OID类型,值为.1.3.6.1.2.1.1.3.004 07 79 61 6e 67 6c 75 6e ;变量值为OETCT,值为”yanglun30 0f ;第二个变量绑定,类型为SEQUENCE,长度为1506 0a 2b 06 01 02 01 02 02 01 01 01;变量为OID类型,值为.1.3.6.1.2.1.2.2.1.1.102 01 01 ;变量值为整数,13. set操作分析●说明如何产生set操作?答:使用snmpc软件修改管理对象的某个对象实例的值。

SNMP PDU报文格式解析

SNMP PDU报文格式解析

SNMP五种协议数据单元SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。

get-request操作:从代理进程处提取一个或多个参数值(网管系统发送)get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值(网管系统发送)set-request操作:设置代理进程的一个或多个参数值(网管系统发送)get-response操作:返回的一个或多个参数值。

这个操作是由代理进程发出的,它是前面三种操作的响应操作(代理发送)trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生(代理发送) 前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作叫做get、get-next和set操作。

下图描述了SNMP的这5种报文操作。

请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。

SNMP协议数据单元格式解析一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部或trap首部、变量绑定。

下图是封装成UDP数据报文的5种操作的SNMP报文格式。

公共SNMP首部版本写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。

公共体共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。

PDU类型根据PDU的类型,填入0~4中的一个数字,其对应关系下表所示意图。

PDU类型get/set首部请求标识符(request ID)这是由管理进程设置的一个整数值。

代理进程在发送get-response报文时也要返回此请求标识符。

管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。

设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。

实验4 SNMP 协议验证与分析

实验4 SNMP 协议验证与分析

实验报告院(系):数学与计算机科学学院专业班级:学号:姓名:实验地点:网络实验室实验日期:2015年12月8 日一、实验目的本实验的主要目的是学习捕获SNMP报文.通过分析该报文理解SNMP协议的工作过程、SNMP的报文结构、M1B-2树的结构、理解管理信息结构SMI及其规定的ASN.1二、实验内容1、分析并验近SNMP协议的工作过程2、分析并验近SNMP协议数据单元的格式3、分析MEB-2树的结构4、分析理解管理信息结构SMI及其规定的ASN.1三、实验工具数据包捕获分析软件Wireshark、SNMP MIB浏览器(如SNMPB)。

实验环境的说明:本实验最佳环境是在真实的网络环境中进行.可以采取的方式:1)两台联网,可以相互通倌的计算机:一台做管理站(安装SNMP M1B浏览器),—台是被管设备(安装SNMP服务)。

然后通过Wireshark抓包:2)构建如实验二中如Cisco Packet Tracer的真实实验网络.对通过计算机对路由器/ 交换机进行管理.在计算机上通过Wireshadc抓包:注意:本机对本机(127.0.0.1的ip地址)进行通信管理。

Wireshark抓包不能抓取到对127.0.0.1的通信数据包:在Cisco Packet Tracer仿真环境中进行协议査看.不能分析具体的二进制数,是显示的对SNMP数据包解析后的格式。

如果只有一台计算机,要完成本实验.可以采取的方法是使用GNS3软件仿真网络。

可以实现仿真网络与真实计笃机的互联互通(Cisco Packet Tracer)不能与真实的物理网络实现互联互通),对仿真环境中的路由器通过与本机通佶实现管理.在仿真环境中可以用 Wireshark抓包(后继的实验如果无具休的物理网络设备可以使用GNS3.仿真创建仿真网络,对其实施管理)。

四、实验步骤1、分别打幵软件Wireshark和SNMP MIB浏览器2、首先设置Wireshark中捕获报文的过滤条件,将其设罝为只捕获管理站和代理之间的SNMP 报文3、开始捕获SNMP报文4、用M1B浏览器访问MIB被管对象.然后观察Wireshark中显示的信息。

snmp报文解析详细讲解

snmp报文解析详细讲解

0040 02 01 00 30 0d 30 0b 06 07 2b 06 01 02 01 01 01 ...0.0...+......
0050 05 00
30是Identifier SNMP报文 解析 octets, 表示SNMP 消息;
0000 50 78 4c 70 c3 e3 00 0d 87 cb d9 d8 08 00 45 00 PxLp..........E. 0010 44 a7 4a 00 00 80 11 5e 8d 0a 0a 10 0f 0a 0a .D.J....^....... 0020 10 af 0a ed 00 a1 00 30 5c 8c 30 26 02 01 00 04 .......0\.0&....
0020 10 af 0a ed 00 a1 00 30 5c 8c 30 26 02 01 00 04 .....0\.0&....
0030 06 70 75 62 6c 69 63 a1 19 02 02 00 99 02 01 00 .public......... 0040 02 01 00 30 0d 30 0b 06 07 2b 06 01 02 01 01 01 ...0.0...+...... 0050 05 00
T L V
0 0
0 0
0 0
0 0
0 0
1 1
0 1
0 0
SNMP报文 表示 团体名为public 解析
0000 50 78 4c 70 c3 e3 00 0d 87 cb d9 d8 08 00 45 00 PxLp..........E.
0010 44 a7 4a 00 00 80 11 5e 8d 0a 0a 10 0f 0a 0a .D.J....^.......

网络管理实验SNMP报文解析实验报告

网络管理实验SNMP报文解析实验报告

网络管理实验————SNMP报文解析2010-6-14.trap操作:Sniffer软件截获到的trap报文如下图所示:30 2e SNMP报文是ASN.1的SEQUENCE 类型,报文长度是46个八位组。

02 01 00:版本号为integer类型,取值为0,表示snmpv1。

04 06 70 75 62 6c 69 63:团体名为octet string类型,值为“public”a4 21: 表示pdu类型为trap,长度为33个八位组。

06 0c 2b 06 01 04 01 82 37 01 01 03 01 02:制造商标识,类型为object identifier。

值为1.3.6.1.4.1.311.1.1.3.1.2。

40 04 c0 a8 01 3b:代理的IP地址,类型OCTECT STRING,值为192.168.1.59;02 01 04:一般陷阱,类型为INTEGER,值为4,代表这是由“authentication Failure(身份验证失败)”引发的TRAP;02 01 00:特殊陷阱,类型为INTEGER,值为0(当一般陷阱取值不是6时);43 03 06 63 29:时间戳,类型为TIME TICKS,值为418601 (百分之一秒),即系统在运行到大约第70分钟时,代理发出了此TRAP;30 00变量绑定表为空。

5.SNMPv2 GetBulk操作:Sniffer软件截获到的getbulkrequest报文如下图所示:对该报文的分析如下 :30 27 SNMP 报文是ASN.1的SEQUENCE 类型,报文长度为46个八位组;02 01 01 版本号为INTEGER类型,取值为1,表示SNMPv2;04 06 70 75 62 6c 69 63 团体名为OCTET STRING类型,值为“public”。

a5 1a 表示PDU类型为GetBulkRequest,PDU长度为26个八位组;02 03 00 c2 2d 请求标识,INTEGER类型,值为49709;02 01 00 非重复数,INTEGER类型,值为0;02 01 0a 最大后继数,INTEGER类型,值为10;非重复数为0,最大后继数为10,表示要求返回所有请求对象按照字典顺序的后继承法10个对象实例。

SNMP报文抓取及分析

SNMP报文抓取及分析

SNMP报文抓取及分析SNMP(Simple Network Management Protocol)是一种用于网络管理的协议。

它允许网络管理员通过发送和接收SNMP报文来监控和管理网络设备。

SNMP报文是在网络中传输的数据包,包含了有关网络设备和系统的信息。

在本篇文章中,我们将探讨如何抓取和分析SNMP报文。

一、SNMP报文抓取在抓取SNMP报文之前,我们需要准备一个用于抓取报文的工具。

Wireshark是一个强大的网络抓包工具,它支持抓取各种协议的报文,包括SNMP。

以下是在Wireshark中抓取SNMP报文的步骤:1. 首先,打开Wireshark,并选择网络接口以便开始抓取报文。

2. 在Wireshark的过滤器框中输入“snmp”,然后点击“Apply”按钮。

3. Wireshark将开始抓取符合过滤器条件的SNMP报文。

你可以观察到抓取到的报文以及它们的详细信息,如源IP地址、目标IP地址、SNMP版本、报文类型等。

二、SNMP报文分析一旦我们抓取到SNMP报文,我们就可以对其进行分析,以获得有关网络设备和系统的信息。

下面是一些常见的SNMP报文分析技巧:1.首先,我们需要查看SNMP报文的版本号。

SNMP有三个主要的版本:SNMPv1、SNMPv2和SNMPv3、通过查看报文中的版本号,我们可以确定所使用的SNMP版本。

2. 接下来,我们可以查看SNMP报文的类型。

SNMP报文有五种类型:GetRequest(请求数据)、GetNextRequest(请求下一条数据)、GetResponse(响应数据)、SetRequest(设置数据)和Trap(陷阱)。

通过了解报文类型,我们可以了解到SNMP报文的目的。

3. 然后,我们可以查看SNMP报文的OID(Object Identifier)。

OID是SNMP管理信息库中的唯一标识符,用于标识特定的网络设备或系统。

通过查看OID,我们可以确定报文所涉及的对象类型。

网络管理实验报告2-SNMP协议工作原理验证与分析

网络管理实验报告2-SNMP协议工作原理验证与分析

实验二SNMP协议工作原理验证与分析网络10-2班XXX 08103635一、实验目的本实验的主要目的是学习捕获SNMP报文,通过分析该报文理解SNMP协议的工作过程、SNMP的报文结构、MIB-2树的结构、理解管理信息结构SMI及其规定的ASN.1。

二、实验内容1、分析并验证SNMP协议的工作过程;2、分析并验证SNMP协议数据单元的格式;3、分析MIB-2树的结构;4、分析理解管理信息结构SMI及其规定的ASN.1。

三、实验工具数据包捕获软件Iris或WiresharkAdventNet公司的MIB浏览器或Pease MIB Browser四、实验结果1、设置iris过滤器,使其只监测管理工作站和代理之间的通信。

获取ip 组的ipForwarding对象值,写出管理工作站和代理之间的SNMP通信情况,验证SNMP协议的工作过程。

设置iris过滤器获取ip组的ipForwarding对象值:1.3.6.1.2.1.4.1.0SNMP通信情况:本机为25_09(IP:192.168.168.89),监测主机25_10(IP:192.168.168.90),双方正常通信。

2、选取一条GetRequest-PDU进行解析,指出各段数据的意义。

上图中可看到:捕获到一对SNMP报文信息。

左侧显示的是报文信息的PDU解码导航,右下角详细报文数据窗口显示的是详细的报文数据。

选中右下角详细报文数据窗口中的任一段报文数据,即可看到与之相对应的解析突出显示。

从图中也可看到被检测的主机名称为25_09。

00 21 97 AD F2 74 00 21 97 AD 48 A7 08 00 45 00 00 69 62 06 00 00 40 11 46 79 C0 A8 A8 5A C0 A8 A8 59 00 A1 11 EC 00 55 3A E7 30 4B 02 01 00 04 06 70 75 62 6C 69 63 A2 3E 02 02 4A D1 02 01 00 02 01 00 30 32 3030 06 2B 2B 06 01 04 01 4D 01 02 03 01 03 1F 57 69 6E 64 6F 77 73 20 49 6D 61 67 65 20 41 63 71 75 69 73 69 74 69 6F 6E 20 28 57 49 41 29 02 01 01其中MAC是:00 21 97 AD F2 74 00 21 97 AD 48 A7 08 00;目的地址:00 21 97 AD F2 74;源地址:00 21 97 AD 48 A7IP是:45 00 00 69 62 06 00 00 40 11 46 79 C0 A8 A8 5A C0 A8 A8 59;45版本4(IPv4),长度5;40表示生存时间(64);11表示UDP(17);C0 A8 A8 5A表示源地址:192.168.168.90;C0 A8 A8 59表示目的地址:192.168.168.89;UDP是:00 A1 11 EC 00 55 3A E7;00 A1表示源端口161(UDP-SNMP);11 EC表示目的端口4588(UDP-4588);00 55表示长度:85;SNMP是:30 4B 02 01 00 04 06 70 75 62 6C 69 63 A2 3E 02 02 4A D1 02 01 00 02 01 00 30 32 30 30 06 2B 2B 06 01 04 01 4D 01 02 03 01 03 1F 57 69 6E 64 6F 77 73 20 49 6D 61 67 65 20 41 63 71 75 69 73 69 74 69 6F 6E 20 28 57 49 41 29 02 01 0102 01 00表示:SNMP版本1;A2 3E表示PDU类型:RESPONSE;02 02 4A D1表示Request ID:0x4ad1;02 01 00 02 01 00表示:Status和index都没错误;30 30 06 2B 2B 06 01 04 01 4D 01 02 03 01 03 1F 57 69 6E 64 6F 77 73 20 49 6D 61 67 65 20 41 63 71 75 69 73 69 74 69 6F 6E 20 28 57 49 41 29表示:OID;3、考察RFC1213-MIB文件结构,理解SMI。

SNMP报文抓取与分析(一)

SNMP报文抓取与分析(一)

SNMP报⽂抓取与分析(⼀)SNMP报⽂抓取与分析(⼀)1、抓取SNMP报⽂SNMP报⽂的形式⼤致如下图所⽰我们这⾥使⽤netcat这个⼯具来抓取snmp的PDU(协议数据单元)。

(因为我们并不需要前⾯的IP和UDP⾸部)关于netcat的⼀些基本使⽤可以看这⾥netcat获取snmp报⽂1 先获取snmpwalk发出的(get-next-request)我们使⽤nc来监听161端⼝,然后把输出重定向到⽂件a.hex。

因为监听的是161端⼝,所以这⾥必须以root权限运⾏。

sudo nc -u -l 161 >a.hex这样之后使⽤snmpwalk这个⼯具来向这个“受控端”发送命令。

snmpwalk -c public -v 2c localhost 1.3.6.1.4.201566.1.12 再获取代理程序发回的(get-response)我们先要打开代理程序Agent,然后使⽤下⾯的命令将a.hex的内容发给代理程序,并将接收到的返回保存到b.hexo@o-pc:~/snmpPUD$ nc -u 127.0.0.1 161 <a.hex >b.hex^Co@o-pc:~/snmpPUD$下图是针对SNMPv1版本的。

⽬前⽐较通⽤的是SNMP v2c/v3版本,具有⼋种PDU类型。

分析获取到的报⽂先使⽤hexdump来查看⼀下获取到的报⽂内容。

(hexdump是⼀个很好⽤的⼗六进制分析⼯具)o@o-pc:~/snmpPUD$ hexdump -C a.hex00000000 30 2c 02 01 01 04 06 70 75 62 6c 69 63 a1 1f 02 |0,.....public...|00000010 04 22 70 8b d4 02 01 00 02 01 00 30 11 30 0f 06 |."p........0.0..|00000020 0b 2b 06 01 04 01 8c a6 5e 01 01 01 05 00 |.+......^.....|0000002eo@o-pc:~/snmpPUD$ hexdump -C b.hex00000000 30 30 02 01 01 04 06 70 75 62 6c 69 63 a2 23 02 |00.....public.#.|00000010 04 22 70 8b d4 02 01 00 02 01 00 30 15 30 13 06 |."p........0.0..|00000020 0e 2b 06 01 04 01 8c a6 5e 01 01 01 01 01 00 02 |.+......^.......|00000030 01 2b |.+|00000032报⽂分析结果先看结果,然后再慢慢分析get-next-request报⽂⽰例分析(a.hex)⼗六进制数据解释30表⽰SNMP协议报⽂(整个报⽂是⼀个SEQUENCE)2c消息长度44字节(表⽰后⾯还有44个字节的内容)02 01 01协议版本(2c)(前两个字节02表⽰INTEGER类型01是指1个字节长度,最后的01是值01) 04参数类型(OCTSTR)06群体(community)名长度70 75 62 6c 69 63群体名public的assic码值a1PUD类型get-next-request1f snmp pdu的长度为31个OctStr(后⾯的内容31字节)02 04 22 70 8b d4请求标识符Request ID02 01 00表⽰error-state为002 01 00表⽰error-index为030 11表⽰后⾯变量绑定是SEQUENCE类型17个字节长度30 0f表⽰(变量名106表⽰该字段是OID类型0b OID长度11字节2b 06 01 04 01 1.3.6.1.4.1(标识1.3被合并为2B)8c a6 5e201566 (这也是根据规则转换得到的)01 01 01 1.1.1⼗六进制数据解释05 00表⽰NULLget-response报⽂⽰例分析(b.hex)⼗六进制数据解释30表⽰SNMP协议报⽂(整个报⽂是⼀个SEQUENCE) 30消息长度48字节(表⽰后⾯还有48个字节的内容)02 01 01协议版本(2c)(前两个字节02 01 表⽰INTEGER类型) 04参数类型(OCTSTR)06群体(community)名长度70 75 62 6c 69 63群体名public的assic码值a2PUD类型get-response23snmp pdu的长度为35个OctStr(后⾯的内容31字节) 02 04 22 70 8b d4请求标识符Request ID02 01 00表⽰error-state为002 01 00表⽰error-index为030 11表⽰后⾯变量绑定是SEQUENCE类型17个字节长度30 0f表⽰(变量名106表⽰该字段是OID类型0b OID长度11字节2b 06 01 04 01 1.3.6.1.4.1(标识1.3被合并为2B)8c a6 5e201566 (这也是根据规则转换得到的)01 01 01 1.1.100表⽰.0 即第⼀个实例\(下⾯的值实际是节点1.3.6.1.4.1.201566.1.1.1.0的) 02 01 2b02 01 表⽰INTEGER类型1个字节,2b表⽰值(43) 05 00表⽰NULL下⾯是使⽤snmpwalk命令获取的结果。

snmp协议的分析

snmp协议的分析

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载snmp协议的分析甲方:___________________乙方:___________________日期:___________________snmp协议的分析篇一•.实验三snmp协议分析实验三snmp协议分析一、实验目的(1) 掌握嗅探工具ethereal协议分析软件的使用方法(2) 利用ethereal软件工具截snmp数据包并完成报文分析二、实验环境局域网,windowsserver20xx , snmputil , ethereal , superscan三、实验步骤(0、snmp的安装配置)1、理解应用层snmp协议工作原理;2、使用windows平台上的snmputil.exe 程序实现snmp 交互;3、利用协议分析和抓包工具ethereal抓取分析snmp 协议报文。

四、实验内容内容一:1. 打开ethereal软件开始抓包,输入命令:snmputilget[ 目标主机ip地址]团体名.1.3.6.1.2.1.1.2.0 停止抓包。

对snmp包进行过滤。

(给出抓包结果截图)2. 找出一对snmp协议请求包和相对应的应答包。

给出抓包结果截图。

3. 对上面这对请求和应答包进行分析,根据snmp协议数据包格式填值。

请求包报文分析应答包报文分析内容二:1. 通过snmptuil.exe 与snmp交互:输入snmputilwalk[ 目标主机ip地址]团体名.1.3.6.1.2.1.1 命令列出目标主机的系统信息。

2. 打开ethereal软件开始抓包,再次输入上面命令后,停止抓包。

对snmp包进行过滤。

给出抓包结果截图。

3. 找出一对snmp协议请求包和相对应的应答包。

给出抓包结果截图。

4. 对上面这对请求和应答包进行分析,根据snmp协议数据包格式填值。

请求包报文分析应答包报文分析5. 分析snmputil.exe 中的walk方式是采用的snmp的哪种类型的数据包?篇二:snmp的协议分析snmp的协议分析(ccnupq/ccnupq/)1bRe 编码(basicencodingRule)基本编码规则使用使用tlV方式,即type,length,Value消息中所表达的信息都用一个type域标记一个legnth限定值然后是Value , asn.1是一种用来描述系统之间传递的信息格式的语言规范被广泛用在通信协议的规格定义中一句话理解asn.1和beR即是:“信息的描述基于asn.1语法”和“信息的编码基于beR方法”2snmp报文的过程中我们经常用到的是下面的数据类型标识号各种数据类型的解释integeR 一个变虽虽然定义为整型,但也有多种形式。

SNMP报文解析_WL

SNMP报文解析_WL

SNMP-NTCIP报文解析1. 引言简单网络管理协议(SNMP)在RFC 1157中定义,SNMP可以在传输层采用各种各样的协议,但是使用最多的还是UDP协议。

2. 协议概述SNMP到目前为止一共有三个版本,当下使用最广泛的是SNMPv2。

SNMP由三部分组成::SNMP内核、管理信息结构SMI和管理信息库MIB。

2.1. 工作原理SNMP应用场景:图1 SNMP的应用场景管理站和代理端使用MIB进行接口统一,MIB定义了设备中的被管理对象。

管理站和代理都实现相应的MIB对象,使得双方可以识别对方的数据,实现通信。

管理站向代理请求MIB中定义的数据,代理端识别后,将管理设备提供的相关状态或参数等数据转换成MIB定义的格式,最后将该信息返回给管理站,完成一次管理操作2.2. 管理信息结构 SMI管理信息结构SMI一共有三个功能:被管对象命名、存储被管对象的数据类型、网络上传送的管理数据的编码。

被管对象的命名都在对象命名树上,处在该树的某个分支或者节点,如下图所示:被管对象的数据结构,包括简单类型和结构化类型:被管对象的编码(TLV编码方式):2.2.1. T字段T字段为1个字节,分别为类别(2),格式(1)和编号(5),T字段的各部分含义如下表所示:数据类型定义如下:2.2.2. L字段L字段称为长度字段(表示单字节或者多字节),表示方法如下:单字节:L最高bit为0,高bit后面的7个bits表示V的长度;多字节:L最高bit为1,高bit后面的7个bits表示V的长度取值所占用的字节数,即取出7bits表示的字节后,整合得出V字段的长度。

2.2.3. V字段值字段,具体取值,举例如下:Integer 15:T字段0x02,Integer的长度为4bytes,则TLV编码为02 04 00 00 00 0F;IPAddress 192.1.2.3:IPAddress的T字段为0x40,IP地址需要四字节表示,则L字段为0x04,则TLV编码为:40 04 C0 01 02 03.2.3. 管理信息库 MIB3. 报文结构3.1. PDU类型SNMP中定义了五种消息类型Get-Request,Get-Response,Get-Next-Request,Set-Request和Trap。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SNMP报文格式分析1.SNMP报文格式1.1 snmp简介1.1.1 snmp工作原理SNMP采用特殊的客户机/服务器模式,即代理/管理站模型。

对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。

每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。

管理站和代理端使用MIB进行接口统一,MIB定义了设备中的被管理对象。

管理站和代理都实现相应的MIB对象,使得双方可以识别对方的数据,实现通信。

管理站向代理请求MIB中定义的数据,代理端识别后,将管理设备提供的相关状态或参数等数据转换成MIB定义的格式,最后将该信息返回给管理站,完成一次管理操作。

1.1.2 snmp报文类型SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap 。

1.Get-Request 、Get-Next-Request与Get-ResponseSNMP 管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。

Get-Next- Request用于和Get-Request 组合起来查询特定的表对象中的列元素。

2.Set-RequestSNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。

3.TrapSNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生,如接口UP/DOWN,IP地址更改等。

上面五种消息中Get-Request、Get-Next-Request和Set-Request是由管理站发送到代理侧的161端口的;后面两种Get-Response和Trap 是由代理进程发给管理进程的,其中Trap消息被发送到管理进程的162端口,所有数据都是走UDP 封装。

1.1.3 snmp报文格式图SNMP报文的形式大致如下图所示。

1.2 snmp报文编码格式SNMP(简单网络管理协议)是目前在计算机网络中用得最广泛的网络管理协议,它使用ASN.1(Abstract Syntax Notation One抽象语法表示法.1)来定义SNMP 报文格式和MIB(Management Information Base管理信息库)变量的名称。

1.2.1 ASN.1ASN.1是一种描述数据和数据特征的正式语言,它和数据的存储及编码无关。

根据ASN.1标准定义,数据类型分为:a.简单数据类型:boolean布尔值null空integer整型real实数octerstring八进制字符串object identifier对象标识ipaddressIP地址time ticks时刻值等。

b.构造数据类型:sequence序列sequence of setset ofchoice等。

构造数据类型提供一种或多种简单数据类型进行复合的方法。

1.2.2基本编码规则BER在具体系统中,我们需要用具体的编码规则将ASN.1语法表示的抽象数据转换成具体的比特流。

SNMP使用的编码方法是BER(Basic Encoding Rule)。

BER的数据都由三个域构成:标识域(tag) + 长度域(length) + 值域(value)。

1.标识域Tag表示:2.长度域length表示长度域用于指示后续的值域value的字节数。

但是这个长度域自身多长怎么确定呢?SNMP使用的是变长表示法,这有点类似与UTF8的编码方式。

具体表示方法如下:(1)如果值域的长度在0到127字节之间,那么就是一个字节来表示,即第一个最高位为0的时候,其值就代表了值域的长度。

(2)如果值域的长度在127字节以上,那么第一个字节的第一个bit位(为1)就用于指示值域的长度在127字节以上,后7个bit位(实际值)以及后续用于表示值域长度的字节数。

因为绝大部分情况下,值域的长度都在【0,127】区间,所有这种表示方法最节约。

1.3 snmp报文介绍1.3.1 SNMP首部SNMP报文的首部指明了这个报文是SNMP协议报文,以及报文的字节数。

SNMP报文的第一个字节用于表示这是一个SNMP报文,就是0x30。

在第一个字节之后是一个长度域,用于告知后面的SNMP报文的总字节数(不包括前面的0x30和这个长度域所占的字节数)。

如下所示:1.3.2 SNMP版本表示1.3.3 Community共同体表示共同体部分这里一共占了8个字节。

如:x04,0x06,0x70,0x75,0x62,0x6c,0x69,0x630x04是标识域,表示值域类型为(OCTSTR)0x06是长度域,表示值域的长度为6个字节70 75 62 6c 69 63是值域的容,是群体名public的assic码值1.3.4 PUD表示这个部分容比较多,但都是基于BER形式编码出来的。

容举例如下:a2 23 02 04 22 70 8b d4 02 01 00 02 01 00 30 15 30 13 06 0e 2b 06 01 04 01 8c a6 5e 01 01 01 01 01 00 02 01 2b1.PDU类型上面的第一个字节0xa2就是表示这个PDU的类型。

见下表2.PUD长度域0xa2后一个字节是这个PUD的长度域,0x23表示后面的值域是35个字节。

3.get/set表示SNMP应该说是有三种操作,get/set/trap,又可细分为上面表格中的5中PDU 类型。

其中get和set有共同之处,这里先以get的来做说明。

(1)请求标识符Request ID这是由管理进程设置的一个整数值。

代理进程在发送get-response报文时也要返回此请求标识符。

管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。

设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。

举例:02 04 22 70 8b d40x02是标识域,表示值域为整型数据0x04是长度域,表示值域长度为4个字节0x22 70 8b d4是值域,就是一个整数而已。

(577801172)(2)错误状态error-state错误状态是用于告知管理进程,代理进程对其发出的请求的处理结果的状态的。

举例:02 01 000x02是标识域,表示值域为整型数据0x01是长度域,表示值域长度为1个字节(3)错误索引error-index当出现noSuchName、badValue或readOnly的差错时(见上表),由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。

举例:02 01 000x02是标识域,表示值域为整型数据0x01是长度域,表示值域长度为1个字节0x00是值域,因为没有出错,所以这里为01.3.5 变量绑定变量绑定就是跟在错误索引后面的一系列变量。

这些变量同样也采取BER 形式的编码规则。

在get或get-next报文中,变量的值应忽略。

1.3.6 trap(notification)PUD的类型如果不是上面的所述的get/set那就应该是trap(notification)类型1.OID:第一个部分是指trap报文对应的网络设备的对象标识符。

此对象标识符肯定是在enterprise结点{1.3.6.1.4.1}下面的一棵子树上。

2.trap类型3.当使用上述类型2、3、5时,在报文后面变量绑定部分的第一个变量应标识响应的接口。

4. 特定代码(specific-code)指明代理自定义的时间(若trap类型为6),否则为0。

时间戳(timestamp)指明自代理进程初始化到产生trap报告的事件发生所经历的时间,例如时间戳为1230表明在代理初始化后1230ms发生了该时间。

6.变量绑定(variable-bindings)指明一个或多个变量的名和对应的值。

也是采用的BER编码规则。

1.4 数据类型的编码表示下面介绍一些变量类型的编码表示方法。

1.4.1 Integer整型编码表示整型数据的标识域编码是0x02,长度域不定,一般是1/2/4字节等。

整型数据的值域是带符号类型,最高位是符号位,采取补码的表示形式。

要注意的是,其是大端表示法(高地址存低位)。

1.4.2 OID对象标识符编码表示SNMP服务器维护的所有管理信息库(MIB)对象采用ObjectID表示,如,1.3.6.1.2.1.1.1表示MIB库中的设备描述SysDesc变量,其编码规则如下:标识域编码为0x06,长度域根据情况而定,值域的编码比较复杂,如下所示。

1.首两个ID被合并为一个字节X * 40+Y。

例如:1.3合并为1x40+3 = 43 = 0x2B2.后续的ID,如果在区间[1,127],直接编码表示,如果大于127,那么按照下面(3)所述方法编码。

3.如果ID大于127,那么使用多个字节来表示。

a.这多个字节中除最后一个字节外,前面的字节最高位为1b.这多个字节的最后一个字节的最高位为0c.这里每个字节剩下的7个比特位用来表示实际的数值例如201566这个数,用十六进制表示是0x03 13 5e,那么用二进制表示是000 1100 0110 101 1110。

注意上面是以7个比特位为单位进行分划的,现在我们来填充最高位。

将前面的最高位填1,最后一个最高位填0即可得到1000 1100 1010 0110 0101 1110用十六进制表示为0x8c a6 5e1.4.3 sequence组合类型sequence表示其由多个数据组合而成,每一个数据也都还是采用的BER编码方法。

例如我们这里分析的数据包中就要一个sequence类型的数据,其值域又是有一个OID类型的数据和一个Integer类型的数据组合而成的。

见2.1实例。

2.分析报文2.1 get-next-request报文示例分析(a.hex)先使用hexdump来查看一下获取到的报文容。

(hexdump是一个很好用的十六进制分析工具)oo-pc:~/snmpPUD$ hexdump -C a.hex00000000 30 2c 02 01 01 04 06 70 75 62 6c 69 63 a1 1f 02 |0,.....public...|00000010 04 22 70 8b d4 02 01 00 02 01 00 30 11 30 0f 06 |."p........0.0..|00000020 0b 2b 06 01 04 01 8c a6 5e 01 01 01 05 00 |.+......^.....|0000002e2.2 get-response报文示例分析(b.hex)文档报文容:oo-pc:~/snmpPUD$ hexdump -C b.hex00000000 30 30 02 01 01 04 06 70 75 62 6c 69 63 a2 23 02 |00.....public.#.| 00000010 04 22 70 8b d4 02 01 00 02 01 00 30 15 30 13 06 |."p........0.0..| 00000020 0e 2b 06 01 04 01 8c a6 5e 01 01 01 01 01 00 02 |.+......^.......| 00000030 01 2b |.+|00000032。

相关文档
最新文档