⬜⬜⬜ (*^▽^*)欢迎光临 ⬜⬜⬜
✏️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报文分析
报文分析:
根据TLV中T的编码规则,解释下图SNMP协议中version的编码依据。
"sysContact" 是SNMP(Simple Network Management Protocol)协议中的一个OID(Object Identifier)对象,用于获取网络设备的系统管理员联系信息(例如名称、电子邮件地址、电话号码等)。
捕获的报文如下:
具体的字段解析如下:
version-1(0)的字段分析如下所示:
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语法:
1)Get--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
各结构的字段在文档中的定义如下:
其中定义了Object Name和Value,要根据具体的响应数据相应的变化其数据类型。
答:
Get—response的BER编码为a2 2c 以及对应的值,TLV分析:
依据:RFC1157文档中Get—response的ASN.1语法:
1)Get--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,所要请求的信息为------这个托管节点的联系人的文本标识,以及如何联系这个人的信息。
通过报文可以看出,该实例对象传回的值为
TLV分析如下:
04 00【T:00(UNIVERSAL)+0(简单类型)+00100(OCTET STRING类型)】
针对: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的BER编码为a1 19 以及对应的值,TLV分析:
依据:RFC1157文档中Get—next--request的ASN.1语法:
1)Get—next--Request的标签为“上下文专用标签”,因此前两位(标签)为10。
2)类型为SEQUENCE,是构造类型,因此第三位类型值为1。
3)“[0]”表示标签值为1,因此后五位为00001。
Get—response的T为10 1 00001
具体定义如下图所示:
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—response的BER编码为a2 1e 以及对应的值,TLV分析:
依据:RFC1157文档中Get—response的ASN.1语法:
1)Get--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 05【T:00(UNIVERSAL)+0(简单类型)+00100(OCTET STRING类型)】
variable-bindings的值为LeeKK – ASCII编码为4C 65 65 6b 6b
值的含义为该管理设备的设备名称为LeeKK。
欢迎各位→点赞 + 收藏⭐️ + 留言
写给读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事顺意️