SNMP报文抓取与分析(一)

1、抓取SNMP报文

SNMP报文的形式大致如下图所示

我们这里使用netcat这个工具来抓取snmpPDU(协议数据单元)。(因为我们并不需要前面的IPUDP首部)

关于netcat的一些基本使用可以看这里http://www.cnblogs.com/oloroso/p/4610563.html

本文由乌合之众 lym瞎编,欢迎转载 blog.cnblogs.net/oloroso
本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso

netcat获取snmp报文

1 先获取snmpwalk发出的(get-next-request)

我们使用nc来监听161端口,然后把输出重定向到文件a.hex。因为监听的是161端口,所以这里必须以root权限运行。

sudo nc -u -l 161 >a.hex

这样之后使用snmpwalk这个工具来向这个“受控端”发送命令。

snmpwalk -c public -v 2c localhost 1.3.6.1.4.201566.1.1

2 再获取代理程序发回的(get-response)

我们先要打开代理程序Agent,然后使用下面的命令将a.hex的内容发给代理程序,并将接收到的返回保存到b.hex

o@o-pc:~/snmpPUD$ nc -u 127.0.0.1 161 <a.hex >b.hex
^C
o@o-pc:~/snmpPUD$

下图是针对SNMPv1版本的。目前比较通用的是SNMP v2c/v3版本,具有八种PDU类型。

分析获取到的报文

先使用hexdump来查看一下获取到的报文内容。(hexdump是一个很好用的十六进制分析工具)

o@o-pc:~/snmpPUD$ hexdump -C a.hex
00000000 30 2c 02 01 01 04 06 70 75 62 6c 69 63 a1 1f 02 |0,.....public...|
00000010 04 22 70 8b d4 02 01 00 02 01 00 30 11 30 0f 06 |."p........0.0..|
00000020 0b 2b 06 01 04 01 8c a6 5e 01 01 01 05 00 |.+......^.....|
0000002e
o@o-pc:~/snmpPUD$ hexdump -C b.hex
00000000 30 30 02 01 01 04 06 70 75 62 6c 69 63 a2 23 02 |00.....public.#.|
00000010 04 22 70 8b d4 02 01 00 02 01 00 30 15 30 13 06 |."p........0.0..|
00000020 0e 2b 06 01 04 01 8c a6 5e 01 01 01 01 01 00 02 |.+......^.......|
00000030 01 2b |.+|
00000032

报文分析结果

先看结果,然后再慢慢分析

get-next-request报文示例分析(a.hex)

十六进制数据 解释
30 表示SNMP协议报文(整个报文是一个SEQUENCE)
2c 消息长度44字节(表示后面还有44个字节的内容)
02 01 01 协议版本(2c)(前两个字节02表示INTEGER类型01是指1个字节长度,最后的01是值01)
04 参数类型(OCTSTR)
06 群体(community)名长度
70 75 62 6c 69 63 群体名public的assic码值
a1 PUD类型get-next-request
1f snmp pdu的长度为31个OctStr(后面的内容31字节)
02 04 22 70 8b d4 请求标识符Request ID
02 01 00 表示error-state为0
02 01 00 表示error-index为0
30 11 表示后面变量绑定是SEQUENCE类型17个字节长度
30 0f 表示(变量名1
06 表示该字段是OID类型
0b OID长度11字节
2b 06 01 04 01 1.3.6.1.4.1(标识1.3被合并为2B)
8c a6 5e 201566 (这也是根据规则转换得到的)
01 01 01 1.1.1
05 00 表示NULL

get-response报文示例分析(b.hex)

十六进制数据 解释
30 表示SNMP协议报文(整个报文是一个SEQUENCE)
30 消息长度48字节(表示后面还有48个字节的内容)
02 01 01 协议版本(2c)(前两个字节02 01 表示INTEGER类型)
04 参数类型(OCTSTR)
06 群体(community)名长度
70 75 62 6c 69 63 群体名public的assic码值
a2 PUD类型get-response
23 snmp pdu的长度为35个OctStr(后面的内容31字节)
02 04 22 70 8b d4 请求标识符Request ID
02 01 00 表示error-state为0
02 01 00 表示error-index为0
30 11 表示后面变量绑定是SEQUENCE类型17个字节长度
30 0f 表示(变量名1
06 表示该字段是OID类型
0b OID长度11字节
2b 06 01 04 01 1.3.6.1.4.1(标识1.3被合并为2B)
8c a6 5e 201566 (这也是根据规则转换得到的)
01 01 01 1.1.1
00 表示.0 即第一个实例\
  (下面的值实际是节点1.3.6.1.4.1.201566.1.1.1.0的)
02 01 2b 02 01 表示INTEGER类型1个字节,2b表示值(43)
05 00 表示NULL

下面是使用snmpwalk命令获取的结果

SNMP报文抓取与分析(一)的更多相关文章

  1. SNMP报文抓取与分析(二)

    SNMP报文抓取与分析(二) SNMP报文抓取与分析(二) 1.SNMP报文表示简介 基本编码规则BER 标识域Tag表示 长度域length表示 2.SNMP报文详细分析(以一个get-respon ...

  2. PHP抓取及分析网页的方法详解

    本文实例讲述了PHP抓取及分析网页的方法.分享给大家供大家参考,具体如下: 抓取和分析一个文件是非常简单的事.这个教程将通过一个例子带领你一步一步地去实现它.让我们开始吧! 首先,我首必须决定我们将抓 ...

  3. C#抓取和分析网页的类

    抓取和分析网页的类. 主要功能有: Ontology 1.提取网页的纯文本,去所有html标签和javascript代码 2.提取网页的链接,包括href和frame及iframe 3.提取网页的ti ...

  4. NetCloud——一个网易云音乐评论抓取和分析的Python库

    在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...

  5. Scrapy实战篇(八)之爬取教育部高校名单抓取和分析

    本节我们以网址https://daxue.eol.cn/mingdan.shtml为初始链接,爬取教育部公布的正规高校名单. 思路: 1.首先以上面的地址开始链接,抓取到下面省份对应的链接. 2.在解 ...

  6. 吴裕雄--天生自然python学习笔记:WEB数据抓取与分析

    Web 数据抓取技术具有非常巨大的应用需求及价值, 用 Python 在网页上收集数据,不仅抓取数据的操作简单, 而且其数据分析功能也十分强大. 通过 Python 的时lib 组件中的 urlpar ...

  7. 利用Wireshark抓取并分析OpenFlow协议报文

    OpenFlow 交换机与控制器交互步骤 1. 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网 ...

  8. Android测试日志文件抓取与分析

    1.log文件分类简介 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有:adb shel ...

  9. 深入理解USB流量数据包的抓取与分析

    0x01 问题提出 在一次演练中,我们通过wireshark抓取了一个如下的数据包,我们如何对其进行分析? 0x02 问题分析 流量包是如何捕获的? 首先我们从上面的数据包分析可以知道,这是个USB的 ...

随机推荐

  1. 自然语言14.1_python实现PorterStemmer算法

    QQ:231469242 欢迎喜欢nltk朋友交流 #https://tartarus.org/martin/PorterStemmer/python.txt #!/usr/bin/env pytho ...

  2. 基于centOS6.7搭建LAMP(httpd-2.4.18+mysql-5.5.47+php-5.6.16)环境

    首先确保系统可以联网.设置IP地址以及虚拟机安装linux在此略过.本文采用centos6.7 64位minimal版.php5.6.16.httpd-2.4.18.mysql-5.5.47版搭建la ...

  3. JavaWeb学习笔记——DAO设计模式

  4. Jasper(物联网网络支撑平台公司)的技术为什么这么牛逼?

    Jasper在这个行业积累了十几年,合作的运营商超过30个,合作的行业大咖包括了通用.空客.宝马.特斯拉等几千个行业龙头,还是有很多积累下来的优势的. 一是,Jasper通过积累下来的行业应用经验,针 ...

  5. POJ 2389 Bull Math(水~Java -大数相乘)

    题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...

  6. struts2 拦截器和actioninvocation、PreResultListener

       Interceptor说明 Interceptor的接口定义没有什么特别的地方,除了init和destory方法以外,intercept方法是实现整个拦截器机制的核心方法.而它所依赖的参数Act ...

  7. struts2.3.16所需的基本的jar包---------SSH升级包不是整体全部都升级的

    struts2.3.16所需的基本的jar包   jar包放多了就报Exception什么Unable to load....上网搜了半天也没有能解决的 下面所说的jar包放到WEB-INF/lib以 ...

  8. Nginx限制某个IP同一时间段的访问次数

    nginx可以通过HttpLimitReqModul和HttpLimitZoneModule配置来限制ip在同一时间段的访问次数. HttpLimitReqModul用来限制连单位时间内连接数的模块, ...

  9. 通过LVS+Keepalived搭建高可用的负载均衡集群系统

    1. 安装LVS软件      (1)安装前准备操作系统:统一采用Centos6.5版本,地址规划如下: 服务器名 IP地址 网关 虚拟设备名 虚拟ip Director Server 192.168 ...

  10. javascript模块简单写法

    写法1: (function (wd, doc) { var mw = {}; mw.noConflict = noConflict; var _$ = wd.$; wd.$ = mw; functi ...