SNMP协议报文分析示例

实验环境设置

(1)在本地主机上开启SNMP服务,注意读写权限

 (2)安装MIB Browser,可根据OID获取设备的各种信息

(3)两台主机连接到同一台路由器(一个网段内),主机A获取主机B的IP地址并加入SNMP服务,以便能够通过MIB获得主机B的信息。


实验步骤

(1)打开Wireshark,选择两台主机同时连接的WLAN,准备抓包,可以通过过滤器设置只得到SNMP的报文

 (2)在MIB Browser 的Agent(addr)中输入主机B的IP地址,点击GetNext或者Get获取信息,同时可以看到Wireshark中成功抓取到SNMP的各种类型报文。

(3)选择报文打开,进行报文分析

 实验结果分析和结论

前置知识——snmp报文数据类型

 简单类型:

  • INTEGER,整数类型:ASN.1中未限制整数的位数,即可以是任意大小的整数。如 Number::=INTEGER
  • BOOLEAN,布尔类型:取值为TRUE或FALSE。如 Married::=BOOLEAN
  • REAL,实数类型:ASN.1中对实数精度无限制,REAL可以表示所有的实数。实数可以表示为科学计数法:M×BE,其中尾数M和指数E可以取任何正或负整数值,基数B可以取2或10。如 angle1 AngleInRadians::={31415926, 10, -7}
  • ENUMERATED,枚举类型:是一组个数有限的整数值,可以给每个整型值赋予不同的意义。如 Month::= ENUMERATED {Jan (1), … , Dec (12) }
  •  OBJECT DESCRIPTION,对象描述符:用于确定对象的一串字符串。
  •  NULL,空值类型:用于位置的填充。若某个时刻无法得知数据准确值,就将其定义为NULL类型。
  • EXTERNAL,自定义类型。

  结构类型:

  • SEQUENCE,序列类型,包含0个或多个组成元素的有序列表。列表的不同元素可分属于不同的数据类型。元素含元素名、元素类型,其中元素类型可是简单类型,也可是定义的其他构造类型。如 BookPageNo::=Sequence {ChapterNo, Separator,PageNo}
  • SEQUENCE OF,单纯序列(数组)类型,即序列中的各项都属于同一类型,可看作SEQUENCE类型的特例。如 BookPages::= Sequence of BookPageNo
  • SET,集合类型,包含0个或多个组成元素的无序集合。元素顺序无任何意义,但它们之间必须是不相同的,组成元素的类型可以为不同的ASN.1类型。如 BookPages::=Set {ChapterNo, Separator, PageNo}
  • SET OF,单纯集合类型,是包含0个或多个组成元素的无序集合,同单纯序列类型类似,元素须为相同的类型。如 BookPages::=Set of {Sequence {ChapterNo, Separator, PageNo}}

首先要清楚SNMP协议本身的报文格式(本文只以普通消息为例)

       

*参数说明:

  • 版本:SNMP V1为0,V2:1, V3:2;
  • 团体名:团体名(community):是一个字符串,作为管理进程和代理进程之间的验证的密码,读缺省为“public”,写缺省为“private”;
  • PDU类型:

     
  • 请求标识符(request ID): 由管理进程设置的一个整数值。代理进程发送get-response时也要返回此请求标识符。
  • 差错状态(error status):由代理进程回答时填入0~5中的一个数字。
  • 差错索引(error index):当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移;
  • 变量绑定(variable-bindings):读取或设置的一个或多个oid的名和对应的值,在get或get-next报文中,变量的名称有效,但值应忽略

        拆分报文时,只需要抓住编码结构“TLV”

         根据Wireshark可以看到,主机通过MIB Browser获取主机B的各项信息时,抓取主机A发送给主机B的get-request、get-next-request类型的SNMP报文以及主机B回复给主机A的get-respose类型SNMP报文,现在截取几段报文分析如下:

  • 报文1

序号

TLV

数据

含义

1

Tag

30

SEQUENCE数据类型

Length

26

数据包长度为22个字节

2

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

00

版本为v1

3

Tag

04

OCTET SIRING数据类型

Length

06

数据长度6字节

Value

70 75 62 6c 69 63

Public

4

Tag

a0

PUD类型:get-request

Length

19

PUD数据包长度25字节

5

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

01

reuest ID:00000001

6(Error status)

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

00

00:noError一切正常

7

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

00

Error Index

8

Tag

30

SEQUENCE数据类型

Length

0e

数据包长度14字节

9

Tag

30

SEQUENCE数据类型

Length

0c

数据长度12字节

10

Tag

06

OBJECT DESCRIPTION(对象描述符)

Length

08

数据长度8字节

Value

2b 06 01 02 01 01 05 00

1.3.6.1.2.1.1.5.0

11

Tag

05

NULL

Length

00

  • 报文2

序号

TLV

数据

含义

1

Tag

30

SEQUENCE数据类型

Length

35

数据包长度为53个字节

2

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

00

版本为v1

3

Tag

04

OCTET SIRING数据类型

Length

06

数据长度6字节

Value

70 75 62 6c 69 63

Public

4

Tag

a2

PUD类型:get-response

Length

28

PUD数据包长度40字节

5

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

01

reuest ID:00000001

6(Error status)

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

00

00:noError一切正常

7

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

00

Error Index

8

Tag

30

SEQUENCE数据类型

Length

1d

数据包长度29字节

9

Tag

30

SEQUENCE数据类型

Length

1b

数据长度27字节

10

Tag

06

OBJECT DESCRIPTION(对象描述符)

Length

08

数据长度8字节

Value

2b 06 01 02 01 01 05 00

1.3.6.1.2.1.1.5.0

11

Tag

04

OCTET SIRING数据类型

Length

0f

数据长度15字节

Value

44 45 53 4b 54 4f 50 2d 45 4f 39 37 4f 39 37

“DESKTOP-EO97O97”

(ASCII编码)

  • 报文三

序号

TLV

数据

含义

1

Tag

30

SEQUENCE数据类型

Length

26

数据包长度为22个字节

2

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

00

版本为v1

3

Tag

04

OCTET SIRING数据类型

Length

06

数据长度6字节

Value

70 75 62 6c 69 63

Public

4

Tag

a1

PUD类型:get-next-request

Length

19

PUD数据包长度25字节

5

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

01

reuest ID:00000001

6(Error status)

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

00

00:noError一切正常

7

Tag

02

INTTEGER整数型

Length

01

数据长度1字节

Value

00

Error Index

8

Tag

30

SEQUENCE数据类型

Length

0e

数据包长度14字节

9

Tag

30

SEQUENCE数据类型

Length

0c

数据长度12字节

10

Tag

06

OBJECT DESCRIPTION(对象描述符)

Length

08

数据长度8字节

Value

2b 06 01 02 01 01 03 00

1.3.6.1.2.1.1.3.0

11

Tag

05

NULL

Length

00

  • 35
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值