Sniffer(上):01报文里追查数据

最近正在学习SNMP编程,从而进行更有效的网络管理,近期的重点是SNMP的5个基本操作(参见RFC1157文档,即get-request get-next-request get-response set-request trap),但是只看书中的描述不直观,如果能看到实在的操作就更好了,Sniffer 软件可以很好的提供给我们这方面的信息,下面我结合Sniffer Pro这款软件的操作介绍一下SNMP的5个基本操作。

  说起 Sniffer Pro这款软件,大家可能都听说过,比如利用Sniffer Pro查看网络故障,或是用Sniffer Pro盗取用户资料等,但是相信大家把Sniffer Pro下载下来使用以后都发现,并不能像网络高手那样运用自如,为什么呢?其实还是我们对于网络协议不够了解,渐渐的就对Sniffer Pro失去了兴趣。但是最近随着学习的深入,我渐渐的转变了观念,Sniffer Pro应该是一款让我们学习网络协议的工具,我们可以通过学习Sniffer Pro的使用来学习和熟悉网络协议,下面就是我这一段时间来的学习心得。

  一、网络拓朴:网络管理学习的环境

 这次组网所需的设备是一台CISCO3550交换机和一台PC机,交换机支持SNMP协议,PC机上运行Sniffer Pro和MIB浏览器程序,朴拓如下:

  正邪Sniffer(上):01报文里追查数据

  

  设备

  

  Ip地址

  

  CISCO3550交换机 

  

  10.66.0.1 

  

  PC机

  

  10.66.1.118 

  

  软件设置如下:

  (一)交换机上设置

  snmp-server community public RO              ――启用SNMP协议,但是只设置了只读属性

  snmp-server packetsize 484                    ――产生的应答PDU大小不超过484字节

  snmp-server enable traps snmp authentication warmstart linkdown linkup coldstart warmstart

  ――发送5种标准定义的Trap

  snmp-server host 10.66.1.188 public        ――发送Trap的目的主机

  PC机上相关程序如下:

 Sniffer 程序我选用是Sniffer Pro,MIB浏览器程序我选择是MG-SOFT MIB Browser,这两款程序都是非常经典的程序。

  二、Sniffer Pro的初步设置

   Sniffer Pro要进行包的捕获,但是捕获到的信息太多了,我们如何在开始捕获的时候就开始筛选呢?进行如下的设置即可:"捕获"-"定义过滤器"-"地址"-"地 址类型","位置1"中填入"10.66.1.188","位置2"中填入"10.66.0.1",点击"确定"就可以了。如图1所示

  正邪Sniffer(上):01报文里追查数据

  图1

  这下子就简单多了,会定义过滤器,使我们能够自如的使用Sniffer Pro软件又近了一步。

  三、MIB浏览器的使用:捕获报文内部信息

   打开MIB Browser程序,在"Remote SNMP agent"中填入10.66.0.1,然后依次进入MIB Tree-iso-org-dod-internet-mgmt-mib-2- system,里面有sysDescr、sysObjectID、sysUpTime各项,这时打开Sniffer程序,打开捕获,然后再进入MIB Browser程序,选中sysDescr,点鼠标右键,选"Get",在界面的右边会出现"1: sysDescr.0 (octet string) Cisco Internetwork Operating System Software IOS (tm) C3550 Software (C3550-I5Q3L2-M), Version 12.1(14)EA1a, RELEASE SOFTWARE (fc1)Copyright (c) 1986-2003 by cisco Systems, Inc.Compiled Tue 02-Sep-03 04:08 by antonino",如图2所示

  正邪Sniffer(上):01报文里追查数据

  图2

  这时就可以进入Sniffer程序,点击"捕获"-"停止并显示"

  得到的结果分析如图3所示:

  正邪Sniffer(上):01报文里追查数据

  图3

  以下为报文:

   30 82 01 0a 02 01 00 04 06 70 75 62 6c 69 63 a2 81 fc 02 02 01 dd 02 01 00 02 01 00 30 81 ef 30 81 ec 06 08 2b 06 01 02 01 01 01 00 04 81 df 43 69 73 63 6f 20 49 6e 74 65 72 6e 65 74 77 6f 72 6b 20 4f 70 65 72 61 74 69 6e 67 20 53 79 73 74 65 6d 20 53 6f 66 74 77 61 72 65 20 0d 0a 49 4f 53 20 28 74 6d 29 20 43 33 35 35 30 20 53 6f 66 74 77 61 72 65 20 28 43 33 35 35 30 2d 49 35 51 33 4c 32 2d 4d 29 2c 20 56 65 72 73 69 6f 6e 20 31 32 2e 31 28 31 34 29 45 41 31 61 2c 20 52 45 4c 45 41 53 45 20 53 4f 46 54 57 41 52 45 20 28 66 63 31 29 0d 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 38 36 2d 32 30 30 33 20 62 79 20 63 69 73 63 6f 20 53 79 73 74 65 6d 73 2c 20 49 6e 63 2e 0d 0a 43 6f 6d 70 69 6c 65 64 20 54 75 65 20 30 32 2d 53 65 70 2d 30 33 20 30 34 3a 30 38 20 62 79 20 61 6e 74 6f 6e 69 6e 6f

  整个报文是一个ASN.1序列结构,根据TLV编码(即传输数据的类型(Tag)、大小(Length)、值(Value))原则,解释如下:

  30:序列类型(Message)的传输标志

  01 0a:表示后面数据的字节数,十进制266。后面跟的字节数手工统计不太方便,其实只要将后面的字节全部选中,利用WORD的字数统计功能统计一下就可以了。

  02 01 00:Message的第1个组件version,整数0的BER(基本编码规则Basic Encoding Rules)编码

  04 06 70 75 62 6c 69 63:Message的第2个组件community,字符串类型值"public"的BER编码,我们可以用一个表来让这个结构更清晰。

  

  十六进制数(ASCII码)

  

  字符值

  

  70

  

  p

  

  75

  

  u

  

  62

  

  b

  

  6c

  

  l

  

  69

  

  i

  

  6c

  

  c

  

  1

  四、01组合里查到只读密码

  到这儿,我们认识网络协议又近了一步,即那些0101的组合里真的可以带给我们一些实实在在的信息,这里就告诉了我们只读共同体(即只读密码)是public。

  余下的所有字节,是PDU(Message的第3个组件,Get response)的BER编码

  a2 序列结构(Getreponse-PDU)的传输标志

  fc 数据所占字节度,十进制为252(用WORD统计了一下,又是一点不差)。

  02 02 01 dd Getreponse-PDU的第1个组件request-id,十进制整数477的BER编码

  02 01 00 Getreponse-PDU的第2个组件error-status,整数0的BER编码

  02 01 00 Getreponse-PDU的第3个组件error-status,整数0的BER编码

  余下的所有字节,是Getreponse-PDU的第4个组件variable-bindings的BER编码

  30:序列类型(VARBINDLIST)的传输标志

  ef 数据所占长度,十进制为239

  06 08 2b 06 01 02 01 01 01 00:第1个组件name,对象标识符1.3.6.1.2.1.1.1.0的BER编码

  下面这一长串

   04 81 df 43 69 73 63 6f 20 49 6e 74 65 72 6e 65 74 77 6f 72 6b 20 4f 70 65 72 61 74 69 6e 67 20 53 79 73 74 65 6d 20 53 6f 66 74 77 61 72 65 20 0d 0a 49 4f 53 20 28 74 6d 29 20 43 33 35 35 30 20 53 6f 66 74 77 61 72 65 20 28 43 33 35 35 30 2d 49 35 51 33 4c 32 2d 4d 29 2c 20 56 65 72 73 69 6f 6e 20 31 32 2e 31 28 31 34 29 45 41 31 61 2c 20 52 45 4c 45 41 53 45 20 53 4f 46 54 57 41 52 45 20 28 66 63 31 29 0d 0a 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 38 36 2d 32 30 30 33 20 62 79 20 63 69 73 63 6f 20 53 79 73 74 65 6d 73 2c 20 49 6e 63 2e 0d 0a 43 6f 6d 70 69 6c 65 64 20 54 75 65 20 30 32 2d 53 65 70 2d 30 33 20 30 34 3a 30 38 20 62 79 20 61 6e 74 6f 6e 69 6e 6f

  是第二个组件value的BER编码,也就是"Cisco Internetwork Operating System Software IOS (tm) C3550 Software (C3550-I5Q3L2-M), Version 12.1(14)EA1a, RELEASE SOFTWARE (fc1)Copyright (c) 1986-2003 by cisco Systems, Inc.Compiled Tue 02-Sep-03 04:08 by antonino"这一串字符的编码。

  好了,介绍到这儿就结束了,以上就是我学习Sniffer软件和SNMP协议的心得,供大家参考。

原文地址:https://www.cnblogs.com/monica/p/1350899.html