SNMP报文抓取与分析(一)
SNMP报文抓取与分析(一)
1、抓取SNMP报文
SNMP报文的形式大致如下图所示

我们这里使用netcat这个工具来抓取snmp的PDU(协议数据单元)。(因为我们并不需要前面的IP和UDP首部)
关于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报文抓取与分析(一)的更多相关文章
- SNMP报文抓取与分析(二)
SNMP报文抓取与分析(二) SNMP报文抓取与分析(二) 1.SNMP报文表示简介 基本编码规则BER 标识域Tag表示 长度域length表示 2.SNMP报文详细分析(以一个get-respon ...
- PHP抓取及分析网页的方法详解
本文实例讲述了PHP抓取及分析网页的方法.分享给大家供大家参考,具体如下: 抓取和分析一个文件是非常简单的事.这个教程将通过一个例子带领你一步一步地去实现它.让我们开始吧! 首先,我首必须决定我们将抓 ...
- C#抓取和分析网页的类
抓取和分析网页的类. 主要功能有: Ontology 1.提取网页的纯文本,去所有html标签和javascript代码 2.提取网页的链接,包括href和frame及iframe 3.提取网页的ti ...
- NetCloud——一个网易云音乐评论抓取和分析的Python库
在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...
- Scrapy实战篇(八)之爬取教育部高校名单抓取和分析
本节我们以网址https://daxue.eol.cn/mingdan.shtml为初始链接,爬取教育部公布的正规高校名单. 思路: 1.首先以上面的地址开始链接,抓取到下面省份对应的链接. 2.在解 ...
- 吴裕雄--天生自然python学习笔记:WEB数据抓取与分析
Web 数据抓取技术具有非常巨大的应用需求及价值, 用 Python 在网页上收集数据,不仅抓取数据的操作简单, 而且其数据分析功能也十分强大. 通过 Python 的时lib 组件中的 urlpar ...
- 利用Wireshark抓取并分析OpenFlow协议报文
OpenFlow 交换机与控制器交互步骤 1. 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网 ...
- Android测试日志文件抓取与分析
1.log文件分类简介 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有:adb shel ...
- 深入理解USB流量数据包的抓取与分析
0x01 问题提出 在一次演练中,我们通过wireshark抓取了一个如下的数据包,我们如何对其进行分析? 0x02 问题分析 流量包是如何捕获的? 首先我们从上面的数据包分析可以知道,这是个USB的 ...
随机推荐
- 自然语言6_treebank句子解析
#英文句子结构分析 import nltkfrom nltk.corpus import treebankt = treebank.parsed_sents('wsj_0001.mrg')[1]t.d ...
- (转)Rest介绍
参考文献:Rest简介 REST是一种组织Web服务的架构,其只在架构方面提出了一系列约束. 关于Restful的无状态 所以在stackoverflow中,我们常常会看到有人问:我现在使用了这样一种 ...
- CSS 控制Html页面高度导致抖动问题的原因
CSS 控制Html页面高度导致抖动,这类由高度导致页面抖动的问题,其实究其根本原因是滚动条是否显示导致的 在CSS中添加如下代码: html,body{ overflow-y:scroll;} ht ...
- 其他系统与ecshop的会员整合
步骤一:整合两个的会员数据 用软件Navicat 的 "导入向导"功能,导入你的原数据类型(sql,mdb,db)我的是mdb类型.下一步选择你原有的会员字段“user”.再进行下 ...
- Java并发编程核心方法与框架-CyclicBarrier的使用
CyclicBarrier类似于CountDownLatch也是个计数器,不同的是CyclicBarrier数的是调用了CyclicBarrier.await()进入等待的线程数,当线程数达到了Cyc ...
- asp.net MVC动态路由
项目中遇到需要动态生成控制器和视图的. 于是就折腾半天,动态生成控制器文件和视图文件,但是动态生成控制器不编译是没法访问的. 找人研究后,得到要领: 1.放在App_Code文件夹内 2.不要命名空间 ...
- 使用BeanNameAutoProxyCreator实现spring的自动代理
提到代理,我们可以使用ProxyBeanFactory,并配置proxyInterfaces,target和interceptorNames实现,但如果需要代理的bean很多,无疑会对spring配置 ...
- xStream完美转换XML、JSON
xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...
- jQuery 学习之路(1):引子
一.主流 javascript 库 除 jQuery 外,还有 Prototype.Dojo.YUI.ExtJS.MooTools ,其中 Prototype 较老,结构设计较为松散,ExtJS 界面 ...
- document.all的详细解释(document.all基本上所有浏览器可用!)
从何而来从IE4开始IE的object model才增加了document.all对象,MSDN中也对 Object.all 有详细的说明,Object.all是个HTMLCollection,不是数 ...