碧波液压网 欢迎你,游客。 登录 注册

基于NDIS中间层驱动程序的网络嗅探器

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

      1 引 言

       网络嗅探器(Sniffer)是利用计算机网络接口截获所需网络内部数据报文的一种工具,他广泛地应用于流量分析、安全监控、网管分析、防火墙等的实现中。

       Sniffer主要被用来在网络上截获位于OSI协议模型中各个协议层次上的数据包,通过对截获数据包的分析,嗅探器可以掌握目标主机的信息。由于与具体平台的网络协议栈密切相关,并涉及网络安全的敏感问题,网络嗅探一般没有通用的实现方法。

       随着计算机网络应用的普及,和Windows 2000/XP网络操作系统的广泛应用,使得在Window 2000/XP下保障网络通信安全成为一个迫切需要解决的问题。本文基于NDIS中间层驱动程序实现网络嗅探器,为满足上述需求提供了充分的可能。

      2 网络嗅探器的基本工作原理

        网络嗅探器利用的是共享式的网络传输介质。共享即意味着网络中的一台机器可以嗅探到传递给本网段(冲突域)中的所有机器的报文。例如最常见的以太网就是一种共享式的网络技术,以太网卡收到报文后,通过对目的地址进行检查,来判断是否是传递给自己的,如果是,则把报文传递给操作系统;否则,将报文丢弃,不进行处理;网卡存在一种特殊的工作模式,在这种工作模式下,网卡不对目的地址进行判断,而直接将他收到的所有报文都传递给操作系统进行处理,这种特殊的工作模式,就称之为混杂模式。网络嗅探器通过将网卡设置为混杂模式来实现对网络的嗅探。

        一个实际的主机系统中,数据的收发是由网卡来完成的,当网卡接收到传输来的数据包时,网卡内的单片程序首先解析数据包的目的网卡物理地址,然后根据网卡驱动程序设置的接收模式判断该不该接收,认为该接收就产生中断信号通知CPU,认为不该接收就丢掉数据包,所以不该接收的数据包就被网卡截断了,上层应用根本就不知道这个过程。CPU如果得到网卡的中断信号,则根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收数据,并将接收的数据交给上层协议软件处理。

        3 NDIS中间层驱动程序

        访问位于网络底层的传输协议是网络嗅探器的基本功能。网络嗅探器必须能够接收并分析来自数据链路层、网络层、传输层等底层的数据包,本文介绍的网络嗅探器采用了网络驱动程序接口规范(NDIS)中间层驱动程序技术设计。

        NDIS是Windows网络协议栈构件间的接口规范,基于NDIS的核心态包过滤技术具有较高的结构性和可扩展性。从NDIS4.0开始,NDIS开始支持中间层驱动程序(Intermediate Driver),为NDIS体系带来了很多的灵活性,他是位于一个或者多个NIC驱动之上和传输层驱动之下的驱动程序,即位于链路层和协议层之间,对上面的协议层提供一个虚拟的微端口网卡驱动接口(MiniportDriver),而对下面的链路层则提供一个协议驱动接口(Protocol Driver)。所有经过网卡发送到网络和从网络接收的数据包都要由此通过,因此中间层驱动程序可以对所有网络数据包进行过滤和处理。从NDIS中间层在Windows中的位置来看,其处于核心层,处于与操作系统同等级别的核心态,如图1所示。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论