SNMPv3报文解析

在lwip基础上开发snmpv3功能,在此记录下

这是我在wireshark捕捉到的v3 Trap报文

30 81 ae 02 01 03 30 11 02 04 18 ff cc ae 02 03 00 80 00 04 01 03 02 01 03 04 34 30 32 04 06 31 32 33 34 35 36 02 01 00 02 04 66 d1 68 a6 04 07 73 74 61 72 77 61 79 04 0c 06 9f a1 f7 13 13 36 43 c4 a9 52 73 04 08 e6 3e d9 ee 4f a5 d1 72 04 60 9d 1c ea 6b 43 fc 20 f0 03 2e 75 32 22 87 56 ad 99 5c 4f dd 26 92 95 e0 b1 24 cd 94 32 7d b5 ba b2 f1 99 2b 07 0e 6e c0 e8 b8 ee 60 68 b4 8b 32 9d 08 1d a5 3a 13 bc 55 96 4e 9f 52 9c f5 dc a6 36 69 b4 d9 82 0f c4 9f 62 e6 79 b0 28 38 4b 54 5d eb 5f 9d ab ab 76 3e 58 9b 3d c9 5f 14 93 25

  1. 30 81 ae
    30表示是SNMP消息是ASN.1的SEQUENCE类型,81好像是snmpv3Trap的标志码(V1,V2没有,V3的GET\SET是82 00),ae表示SNMP报文总长度
  2. msgVersion 版本
    1. 02 01 03
    2. 表示为版本号,02表示该字段是OCTETSTRING类型,01表示该字段占一个字节,03表示版本号(V1版本号为00,V2版本号为01)
  3. msgGlobalData 报头数据
    1. 30 11
      1. 30表示SEQUENCE类型,11表示占的字节数
    2. 02 04 18 ff cc ae
      1. 02表示INT类型,04表示占4个字节(之后每个分段都是如此,TLV数据结构)
      2. msgID:消息ID。可以使请求和响应相互关联,响应报文中的Msg ID和请求报文中的Msg ID值相同。
    3. 02 03 00 80 00
      1. Msg Max size:消息发送者支持的最大消息尺寸。
    4. 04 01 03
      1. Msg Flag:请求报文指定是否要求回应Report消息,消息是否进行了加密和认证。
      2. 通常为1个字节,3bit,分别是reportableFlag,authFlag,privFlag
    5. 02 01 03
      1. msgSecurityModel:消息发送者采用的安全模式。接收方也要选择相同的securityModel执行消息的安全处理
  4. 安全参数
    1. 04 34 30 32
      1. 安全参数段的长度
    2. 04 06 31 32 33 34 35 36
      1. Engine ID:认证标识符,唯一标识一个认证。

    3. 02 01 00
      1. Engine Boots:从配置认证引擎到现在,认证引擎重新启动的次数。

    4. 02 04 66 d1 68 a6
      1. Engine Time:从配置认证引擎到现在的时间。

    5. 04 07 73 74 61 72 77 61 79
      1. User Name:用户名

    6. 04 0c 06 9f a1 f7 13 13 36 43 c4 a9 52 73
      1. Auth Para:认证参数值

    7. 04 08 e6 3e d9 ee 4f a5 d1 72
      1. Priv Para:加密后的参数值

  5. msgData

解密后的数据

30 58 04 06 31 32 33 34 35 36 04 00 a7 4c 02 04 18 ff cc af 02 01 00 02 01 00 30 3e 30 0f 06 08 2b 06 01 02 01 01 03 00 43 03 01 34 34 30 19 06 0a 2b 06 01 06 03 01 01 04 01 00 06 0b 2b 06 01 04 01 82 fa 30 01 07 01 30 10 06 0b 2b 06 01 04 01 82 fa 30 01 04 01 02 01 2c

  1. 30 58
    1. msgData长度,从30开始加密,加密前需要加上04和xx(msgData+2)
  2. 04 06 31 32 33 34 35 36
    1. context Engine Id:SNMP唯一标识符,和PDU类型一起决定应该发往那个应用程序。
  3. 04 00
    1. context Name
  4. a7 4c
    1. a7表示厂家自定义trap,4c为PDU所占字节

  5. 02 04 18 ff cc af
    1. request ID:用于匹配请求和响应,SNMP给每个请求分配全局唯一的ID。

  6. 02 01 00
    1. Error status:错误状态,用于表示在处理请求时出现的状况,包括noError、tooBig、noSuchName、badValue、readOnly、genErr。

  7. 02 01 00
    1. Error index:错误索引,当出现异常情况时,提供变量绑定列表(Variable bindings)中导致异常的变量的信息。

  8. 30 3e
    1. 30为SEQUENCE类型,3e为“变量名-值”所占总字节数

  9. 30 0f
    1. 06 08 2b 06 01 02 01 01 03 00
    2. 43 03 01 34 34
    3. 由三部分组成,Variable binding的长度,oid,oid对应的值,皆遵守TLV数据结构第一条“变量名-值”为系统运行时间

  10. 30 19
    1. 06 0a 2b 06 01 06 03 01 01 04 01 00
    2. 06 0b 2b 06 01 04 01 82 fa 30 01 07 01
    3. 第二条Variable binding为TrapOID,关系到trap的describe显示
  11. 30 10
    1. 06 0b 2b 06 01 04 01 82 fa 30 01 04 01
    2. 02 01 2c
    3. 第三条Variable binding可为自定义变量值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值