网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
利用“侦听-转发”程序破译网管协议
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

深圳市芯络实业有限公司  chenjun

一, 开发目的及原理

  本公司在产品开发过程中,需要研究多种以太网交换机(又称智能集线器)的内部网管信息结构,为此,必须编写出一个“窃听”程序,把网管程序和交换机的通讯内容记录下来加以分析。本人在Visual C++ 6.0下用MFC Socket类编出程序,成功地实现了上述目的。

  目前,标准的网络管理程序与支持网管的网络设备之间大多采用标准的简单网络管理协议(SNMP)进行通讯。SNMP是一种高层协议,建立于UDP/IP之上。通讯双方按照SNMP格式来传递各种网管信息和控制信息,并能进行事件实时报告或报警,从而使网络管理员能方便及时地控制网络当前的运行情况。

  网管信息的范围十分广泛,如网络流量,连接状态等,因被管设备的不同而不同,厂家也能依照有关的国际标准自定义自家产品的网管信息。网管信息集中定义于管理信息库(MIB)中,整个体系是一个可扩展的树状结构。一条条的网管信息被包装在SNMP协议包内,再往下传给传输层,转成UDP包,然后通过Socket 机制发送出去。

  本程序的基本原理是:插到网管程序和被管设备之间“欺上瞒下”,与网管程序通讯时冒充被管设备;与被管设备通讯时冒充网管程序,使二者对本程序“无话不谈”;本程序则暗中有序地记录下谈话内容,然后再“上传下达”,将收到的内容转发给真正的接收者,使谈话继续下去,如此循环不已。

二, 编程的思路和具体过程

  本程序不需要复杂的图形界面,因此,只需用Project Wizard开出一个支持Socket而基于对话框的MFC 应用程序即可。对话框的类名为CChatDlg,然后再用资源编辑器在这个对话框上加上一个按钮,面上文字为“Listen”。接收到的所有信息将在Visual C++集成环境的Output窗口中用TRACE语句打出,这样做的目的是能方便及时地看到各种数据,当然也可用别的方法。在本程序中,Client指网管程序,Server指交换机。

  接着给本项目添加两个类,它们都衍生自CSocket,可调用ClassWizard工具生成。CClientSocket用于接收来自网管程序的UDP数据,而CServerSocket则用于接收来自交换机的UDP数据。这两个类的定义如下:

 

class CClientSocket : public CSocket

 {

  // Attributes

  public:

  // Operations

  public:

    CClientSocket(CChatDlg* pdlg);

    virtual ~CClientSocket();

  // Overrides

  public:

    BOOL m_bFirst;

    CChatDlg* pDlg;

    // ClassWizard generated virtual

    function overrides

    //{{AFX_VIRTUAL(CClientSocket)

  public:

    virtual void OnReceive(int nErrorCode);

    //}}AFX_VIRTUAL

  // Generated message map functions

  //{{AFX_MSG(CClientSocket)

  // NOTE - the ClassWizard will add and remove member functions here.

  //}}AFX_MSG

  // Implementation

  protected:

 };

  m_bFirst和pDlg是自定义的两个类别成员, 其作用见下文。

class CServerSocket : public CSocket

 {

  // Attributes

  public:

  // Operations

  public:

    CServerSocket(CChatDlg* pdlg);

    virtual ~CServerSocket();

  // Overrides

  public: CChatDlg* pDlg;

  // ClassWizard generated virtual function overrides

  //{{AFX_VIRTUAL(CServerSocket)

  public:

    virtual void OnReceive(int nErrorCode);

  //}}AFX_VIRTUAL

  // Generated message map functions

  //{{AFX_MSG(CServerSocket)

  // NOTE - the ClassWizard will add and remove member functions here.

  //}}AFX_MSG

  // Implementation

  protected:

 };

  然后

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号