实用网络sniffer的设计与实现

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:lpflpf7337
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文在分析网络嗅探器的基本原理基础上,阐述在Windows Xp环境下实现一个网络嗅探器的具体方法和过程并在Visual C++ 6.0开发平台下编程实现。对运行结果进行分析,表明该网络嗅探器具备数据捕获以及对数据包的分析等基本功能,具有较好的应用价值。
  关键词:网络嗅探器;混杂模式;数据包捕获;原始套接字
  中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2011) 16-0000-02
  The Design and Implementation of Network Sniffer
  Liu Lei
  (Department of Information Engineering,Jilin Business and Technology College,Changchun130061,China)
  Abstract:The paper analyzed the basic principles of network sniffer,illustrated a concrete developing process for network sniffer program with Visual C++6.0 in Windows XP.The results which were analyzed showed it could capture and analyze packet data.So it has good application value.
  Keywords:Network sniffer;Promiscuous mode;Packet capturing;Raw socket
  一、前言
  网络嗅探器,英文名称为Sniffer,是利用计算机的网络接口截获在网络中传输的数据信息的一种工具。与主动扫描相比,工作方式非常隐蔽,也容易操作。大多数的嗅探器能分析的协议有:标准以太网、TCP/IP、IPX、DECNET、FDDI、Token等。Sniffer技术用途非常广泛:网络故障诊断、协议分析、应用性能分析、网络安全保障和截获账号密码等。
  二、网络Sniffer的工作原理
  第一,以太网中数据以广播方式传送。
  数据的收发是由网卡来完成的,网卡内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断是否接收,若接收,则产生中断信号通知CPU——>CPU产生中断——>操作系统(OS)调用驱动程序接收数据——>放入堆栈——>OS进行处理;若不接收,数据就被网卡截断,不通知CPU。
  第二,网卡接收模式置为混杂模式。
  网卡一般有四种接收模式:广播、组播、直接方式、混杂模式。其中混杂模式下网卡能够接收通过它的一切数据,不论是不是传给它的。这是编写网络嗅探器的关键。
  三、网络Sniffer的具体实现
  捕获的整个过程是连续的,如加载Winsock信息,建立套接字,设置网卡的混杂模式,捕获、分析数据包等。因此将这些功能的实现集中到一起,直观显示截获的数据信息。操作界面上采用控件列表框List Box显示数据,下压按钮Button触发或停止工作。应用Class Wizard添加函数来处理按钮单击事件。在编辑规则上,用户可选择对特定目标捕捉,即套接字的三个元素:协议,IP地址,端口号。采用控件radio button进行选择操作,最后将截获的数据保存到记事本文件中。功能模块有:网络截包、数据包显示、分解数据包和规则编辑。
  其中主要功能代码实现如下:
  //在线程冲中不断接收IP包
  UINT RecvIpPro(LPVOID lpParam)
  //处理已经接收到的IP包
  EnterCriticalSection(&pDlg->m_ls);
  pDlg->SplitIpPack(recvBuf,recvLen);//分解IP包
  pDlg->ShowIpInfo(recvBuf,recvLen);//显示数据
  //加载SOCK
  BOOL CListenDlg::InitSock()
  //建立原始套接字
  int CListenDlg::CreateSock()
  //设置套节字选项
  setsockopt(m_RawSock,SOL_SOCKET,SO_REUSEADDR,(char*)&bOptval,sizeof(bOptval));
  //把网卡置于混杂模式,获取IO操作信息
   DWORD dwBufferLen[10];
   DWORD dwBufferInLen=1;
   DWORD dwBytesReturned=0;
   err=WSAIoctl(m_RawSock, SIO_RCVALL);
  //设置SOCK_RAW为SIO_RCVALL接收IP包
   (&dwBufferInLen,
   sizeof(dwBufferInLen),
   &dwBufferLen,
   sizeof(dwBufferLen),
   &dwBytesReturned,
   NULL, NULL );//最后两参数设置非阻塞
  //分解IP包
  void CListenDlg::SplitIpPack(char *pData, int len)
   int iProtocol;
   iProtocol=pIpHead->proto; //得到包中协议
   strncpy(m_szProtocol,CheckProtocol(iProtocol),MAX_PROTO_TEXT_LEN);
  saSource.sin_addr.s_addr=pIpHead->sourceIP;
  strncpy(m_szSourceIP,inet_ntoa(saSource.sin_addr),MAX_ADDR_LEN); //得到源IP
  四、结束语
  本程序界面简洁,功能简单好用,系统资源占用也很少,是一种切实可行的实现方案。Sniffer技术就像一把双刃剑,既可以进行络维护和管理,也可以被黑客利用,与其他技术手段结合跨越交换机、路由器等抓包,进行网络攻击。总之,在网络安全问题日益突出的今天,我们要更深入研究和正当使用网络嗅探技术,加强防范意识。
  参考文献:
  [1]陈千,马剑锋,焦政,许华虎.Sniffer技术在网络管理中的应用和研究[J].计算机工程与设计,2004,25(4):536-539
  [2]龚伟.网络嗅探器的检测及安全对策[J].微计算机信息,2006,22(15):72-74
  [3]宋方方.基于桥接技术的网络嗅探器设计与实现[D].武汉:华中科技大学,2007
  [4]熊宗武,钱朝阳.基于Windows的网络嗅探器的实现[J].安徽建筑工业学院学报:自然科学版,2008,16(6):94-96
  
其他文献
本文通过从现在高校普遍使用的教材《新编日语》中的授受表现出发,分析了四册教材中对于授受表现的解释、例句和在教材中的运用,得出了教材《新编日语》对于授受表现的不足,
通过对设计色彩文化因素的分析,从而使设计在实践中对色彩的运用有更深层的文化脉络。设计是一种文化创造,而这种创造同样基于人类文化的传承和变迁因素的影响。本文对这些因
在热挤压工艺中挤压力是非常重要的参数,目前主要采用估算的方法来获得其数值,且没有针对管状材料的经验公式。在分析了挤压温度、变形速度、磨擦系数及模具角度等工艺参数对钢
目的 了解我院门诊抗菌药物不合理使用情况,为抗菌药物的安全、合理使用提供参考.方法 通过抽查我院2011 年上半年各星期一的门诊处方共29848 张,从中筛选出含有使用抗菌药物