C++解析SNMP报文——伪代码实现

C++解析SNMP报⽂——伪代码实现
参考
名称解释
SNMP——简单⽹络管理协议;
MIB——管理信息库,任何⼀个被管理的资源都表⽰成⼀个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的⼀系列属性:对象的名称、对象的访问权限和对象的数据类型等;
SMI——管理信息结构,SMI定义了SNMP框架所⽤信息的组织、组成和标识,它还为描述MIB对象和描述协议怎样交换信息奠定了基础;
SMI的数据类型:Integer,octet string,OBJECT IDENTIFIER,SEQUENCE,IpAddress,counter,Gauge,time ticks。MIB对象⽰例
SNMP报⽂
说明:0x2表⽰整型,0x4表⽰oct string类型,0x30表⽰sequence类型,0x6表⽰trap oid类型。
解析流程
接收udp数据:
len=recv(buf,...)
解析报⽂长度:
ptr=buf;
extract_header(ptr,len,0x30,&msg_len,byte_count);
ptr+=byte_count;
解析版本号:
if(ptr[0] != ox2)
return "不是正确的数据类型";
extract_version(ptr,len,&val,byte_count);
ptr+=byte_count;
解析共同体:
if(ptr[0] != 0x4)
retrun "不是正确的数据类型";
extract_octstring(ptr,...,byte_count);
ptr+=byte_count;
解析pdu类型,如锐捷的pdu为0xa7:
if(ptr[0] != 0xa7)
return "不是正确的数据类型";甘蔗林青纱帐
extract_pdutype(ptr,...,byte_count);
ptr+=byte_count;
解析request id:
if(ptr[0] != ox2)
return "不是正确的数据类型";
extract_request_id(ptr,...,byte_count);
ptr+=byte_count;
解析状态码,为整型:
if(ptr[0] != ox2)
return "不是正确的数据类型";
谢尔盖extract_error_status(ptr,...,byte_count);
ptr+byte_count;
解析错误索引:
if(ptr[0] != ox2)
return "不是正确的数据类型";
extract_error_index(ptr,...,byte_count);
ptr+=byte_count;
解析variable binding:
if(ptr[0] != 0x30)
return "不是正确的数据类型";
extract_variable_binding(ptr,...,byte_count);
ptr+=byte_count;
解析系统更新时间字段:
if(ptr[0] != 0x30)
return "不是正确的数据类型";
extract_update_time(ptr,...,&seq_len,byte_count); ptr+=byte_count;
ptr+=seq_len;
51单片机
解析trap oid长度:
if(ptr[0] != 0x30)
return "不是正确的数据类型";
extract_trap_oidlen(ptr,...,&seq_len,byte_count);
ptr+=byte_count;
ptr+=seq_len;
解析具体的oid的key-value值,此处解析的都是企业私有协议,按照企业⽂档解析对应的类型即可,如解析oct string的mac地址:解析mac key的变长字段:
if(ptr[0] != 0x30)
return "不是正确的数据类型";
extract_mac_ken_len(ptr,...,&seq_len,byte_count);
ptr+=byte_count;
ptr+=seq_len;
解析mac的oid:
我可能不会爱你24if(ptr[0] != ox6)
return "不是正确的数据类型";
extract_mac_oid_len(ptr,...,&seq_len,byte_count);
ptr+=byte_count;
ptr+=seq_len;
获取oct string类型的mac地址:
碱含量
异位发酵床if(ptr[0] != 0x4)
retrun "不是正确的数据类型";
extract_mac_oid_value(ptr,...,&mac_len,byte_count);
⾄此解析成功mac地址,其他的企业oid字段解析同理。

本文发布于:2024-09-22 20:29:53,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/532462.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:解析   对象   管理   企业   信息
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议