🚀write in front🚀
一、实验目的
学习捕获SNMP报文,通过报文分析理解SNMP协议的工作过程。
二、实验内容与设计思想
实验内容:编写代码,测试
1)使用snmputilg发送SNMP数据包; 使用wireshark抓包;使用netstat -an查看代理站TCP/UDP连接表,分析并验证SNMP协议的工作过程;
2)自行挑选MIB-2功能组中IP、ICMP、TCP、UDP等的管理对象(要有列对象),抓包分析其SNMP协议工作过程。
3)查找标量对象标识符.1.3.6.1.2.1.11.13是什么对象,其实例标识符是什么?若连续多次GET这个实例标识符,得到的值有什么变化?请抓包分析其PDU格式。请截图说明。
三、实验要求:
撰写实验报告,给出实验小结,问题分析。实验课后5天提交。
四、实验使用环境
操作系统:Microsoft Windows 7/8/10/11
设计环境:Windows SNMP服务,MIB Browser,Whireshark3.4
📋笔记目录
🚀write in front🚀
🔖查找标量对象标识符.1.3.6.1.2.1.11.13是什么对象,其实例标识符是什么?若连续多次GET这个实例标识符,得到的值有什么变化?请抓包分析其PDU格式。请截图说明
⭐snmpInTotalReqVars实例对象
🌟请求snmpInTotalReqVars对象
🏵️抓包分析snmpInTotalReqVars PDU格式
🔷分析Get-request报文
🔶分析Get-respond报文
🏳️🌈结论:
🚩结尾
🔖查找标量对象标识符.1.3.6.1.2.1.11.13是什么对象,其实例标识符是什么?若连续多次GET这个实例标识符,得到的值有什么变化?请抓包分析其PDU格式。请截图说明
⭐snmpInTotalReqVars实例对象
通过查找对象标识符.1.3.6.1.2.1.11.13是MIB管理信息库中SNMP组中的snmpInTotalReqVars对象,具体描述如下图所示:
- 实例标识符:snmpInTotalReqVars
- 其定义的RFC文档为:RFC 1213
- 定义的语法类型为:Counter
- 读取方式为:read-only
- 具体功能为:SNMP协议实体接收到有效的SNMP Get-Request和Get-Next pdu后成功检索的MIB节点的总数。
🌟请求snmpInTotalReqVars对象
若连续多次GET这个实例标识符,得到的值(从管理站请求到被管理设备代理系统响应返回)返回值Value是呈现递增状态的(7,8,9,10,11……)结果如下图所示:
🏵️抓包分析snmpInTotalReqVars PDU格式
🔷分析Get-request报文
根据前面任务一和任务二的具体报文分析,再简略地复述一下Get--request的报文:
1)GetRequest的标签为“上下文专用标签”,因此前两位(标签)为10。
2)类型为SEQUENCE,是构造类型,因此第三位类型值为1。
3)“[0]”表示标签值为0,因此后五位为00000。
由此可见,TLV中第一个字节T的值为二进制10 1 00000,即1010 0000,对应十六进制数为a0H。
总结:【10(CONTEXT SPECIFIC)+1(构造类型)+00000([0])】,即1010 0000B,a0H。
2.2 第二部分L表示值V的长度。本题中GetRequest PDU的长度为1cH,即十进制28个字节。
2.3 第三部分V表示Get--Request PDU的值,即协议数据单元的内容。根据BER定义,TLV结构的V,可以递归地再编码为TLV结构。
3.1分析Objext Name的BER编码如下图所示;
Object Name,类型是 OBJECT IDENTIFIER 为通用标签 UNIVERSAL,标签值为 6。因此前两位(标签)为00,类型为简单类型,第三位为 0,标签值为 6,后五位为 00110。T字段为的值为 00000110,对应十六进制数为 06H。
V 字段的值为 oid,也就是.1.3.6.1.2.1.11.13,编码为8个字节。
如上图所示:Value 的值是 NULL,NULL 类型只有一个值 NULL,其标签是 UNIVERSAL 5。由于这个类型是空类型,无需存储或传送它的值,第二个字节 00 表示值长度为 0。
🔶分析Get-respond报文
根据前面任务一和任务二的具体报文分析,再简略地复述一下Get--respond的报文:
1), Get--Response 的标签为“上下文专用标签”,标签值为2。类型为 SEQUENCE 序列类型,这是一种构造类型。IMPLICIT(隐含标签)指用新标签替换老标签,因此编码时只编码新标签(即上下文专用标签)。
2). 根据 BER 编码规则,Get--Response 的标签为“上下文专用标签”,前两位(标签)为 10。类型为SEQUENCE是构造类型,因此第三位类型值为 1。“[2]”表示标签值为 2,因此后五位为00010。T 字段的值为二进制 10100010,对应十六进制数为 a2H。
3), 这次抓到的包的长度为29个字节,十六进制表示为1dH。
Get—Respond PDU的值分析如下图所示:
Counter的BER编码为41 01 07。
1. T:【01(Application)+0(简单类型)+00001([1])】,即01 0 00001B,十六进制为41H。
依据:RFC1155文档中Counter的ASN.1语法:
定义中[1]表明Counter的标签为“应用标签”(BER编码为01B),标签值为1(BER编码为00001B);所以Counter的BER中的T的编码为01 00 00001B,十六进制为41H。
IMPLICIT(隐含标签)直接编码新+标签(上下文专用标签)。
2. L:Counter值的长度为1个字节,即01H。
3. V:报文中Counter的值为7,转化为16进制是07H。
🏳️🌈结论:
当前的被管理设备与管理站之间的SNMP协议实体接收到有效的SNMP Get-Request和Get-Next pdu后成功检索的MIB节点的总数为7。
🚩结尾
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
🌈写给读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事顺意🏳️🌈