NDIS驱动框架探究

合集下载

基于NDIS驱动的网络数据捕获研究

基于NDIS驱动的网络数据捕获研究
Ab t a t sr c :Th ewo k p c e a t r h e o o e to ewo k a p iai n a d n t o k s c r y s s m n tc n c p u e a r e n t r a k tc p u e i t ek y c mp n n fn t r p l t n e s c o w r e u t y t i e a d i a a t r l o l
I SSN 1 0 - 0 4 0 9 3 4
E~ i if @c c . e.n mal n : o c cn t e h t :ww d z .e .n t / w.n sn t p/ e T h 8 — 51 5 9 9 3 5 9 9 4 e + 6 5 — 6 0 6  ̄ 0 6
s ca t o k c e o he new o k.M a y m ehod a s d f r n t or c tc p r nd t e m eho s d on N D I n i pe ilne w r pa k  ̄ n t t r n t sc n be u e o e w k pa ke a t e a t d bae u h S i w n— d w si o te ii n nd c ve ints e n t i pe ,t e p n il n t e i plm e t m eho o h s c pt e a e pr v d d.So e o s a m s f ce t a on ne t .I h spa r h r cp e a d h m e n t d fti a ur r o i e yl i m ne or p c tm e h sae d suse n om pae The e c to p o r s w t k a ke t od r ic s d a d c r d. xe u in r g e sofTheN D I ntr e it rv ri n y e n e ala e S i e m d ae d e sa a z d i d ti nd t i l h i tr a aaso a t cur nd o rton m e h sae dec b d. n e l d t t rgesr t e a pe ai t od r s r e n u i

内网安全监控系统中NDIS中间层驱动技术的实现

内网安全监控系统中NDIS中间层驱动技术的实现
关 键 词 : 间 层 驱 动 内 网 数 据 ND S 中 I 中图 法 分 类 号 : 3 3 0 TP 9 . 7 文献标识码 : A 文 章 编 号 :0 27 7 ( 0 6 0— 2 30 l0 —3 8 2 0 )40 9—5
Ab ta t Th e e h iu ft e itre t n a d a ay i O aa p c a e sn t r sr c : e k y tc nq e o h n e cp i n n ls f d t a k g s u ig Newo k o s
Dr e n efc p ic t n i h oed ie v l fW id ws2 0 / i rI traeS cf a i nt ec r rv rl e o n o 0 0 XP/ O 3i e pan d Th v i o e 2 O x lie . e s
维普资讯
广 西 科 学 院学 报
J u n l fGu n x a e fS in e o r a a g i o Acd my o ce cs
2 0 , 2 4 :9 ~ 2 7 0 6 2 ( )2 3 9 V0 _ 2 No 4 No e e 0 6 l2 , . v mb r 2 0
f a i i t ft i tc n q e i p o e n a s mp e e sbl y o h s e h i u r v d i a l . i S
Ke r s:nt r dit rv r i t a t da a p c ge, y wo d i e me a e d ie ,n r ne , t a ka NDI S
摘要 : 阐述 在 Wid ws2 0 / P 2 0 n o 0 0 X / 0 3的核 心 驱 动 层 上 采 用 ND S Newok D ie Itr c pcfai ) I ( t r r r nef eS eict n 中 v a i o

NDIS中间层驱动包截获技术解析

NDIS中间层驱动包截获技术解析

NDIS中间层驱动包截获技术摘要:简要概括了NDIS的概念,阐述了NDIS的工作流程,详细说明了如何编写NDIS中间层驱动程序以获得网络封包的详细信息。

并且给出了一些代表性的示例代码,供读者参考。

一.NDIS驱动模型简介NDIS(Network Driver InterfaceSpecification)是网络驱动程序接口规范的简称。

它横跨传输层、网络层和数据链路层,定义了网卡或网卡驱动程序与上层协议驱动程序之间的通信接口规范,屏蔽了底层物理硬件的不同,使上层的协议驱动程序可以和底层任何型号的网卡通信。

NDIS为网络驱动程序创建了一个完整的开发环境,只需调用NDIS 函数,而不用考虑操作系统的内核以及与其他驱动程序的接口问题,从而使得网络驱动程序可以从与操作系统的复杂通讯中分离,极大地方便了网络驱动程序的编写。

另外,利用NDIS的封装特性,可以专注于一层驱动的设计,减少了设计的复杂性,同时易于扩展驱动程序栈。

防火墙的开发一般采用的是中间驱动程序。

通过NDIS中间层驱动,我们可以截获来自网卡的所有原始数据包。

图1则是NDIS中间层驱动的工作过程图图1NDIS中间层驱动程序是工作在MINIPROT和PROTOCOL接口之间的,驱动程序必须向下导出一个PROTOCOL接口,向上导出一个MINIPORT接口。

将自己创建的驱动程序插入到网卡驱动程序与传输驱动程序之间。

如此一来,当下层的网卡驱动程序接收到数据后会通过MINIPORT接口发送到我们导出的PROTOCOL接口上,NDIS中间层驱动程序便接收到了来自网卡的数据并调用我们准备好的回调函数处理数据包信息。

接着NDIS中间层驱动在处理数据包完毕后再继续把数据通过导出的MINIPROT接口向PROTOCOL接口发送。

这样就完成了一个截获数据包的过程。

二.NDIS中间层驱动的工作流程在开始学习NDIS中间层驱动之前,我们有必要了解下NDIS是怎样工作的。

当然这就包括了它的接收数据包的流程了。

基于NDIS中间层驱动的对等网络流量监管机制

基于NDIS中间层驱动的对等网络流量监管机制
进 行 了详 细描 述 . 以设 备 驱动 程 序 开 发 包( D e v i c e D r i v e r Ki t , D DK) 提供 的 P a s s t h r u例 程 为 骨 架对 该 系统进 行 了 实现 , 对共 享 内存 通信 机 制 、 数 据 拦 截机 制和 主 要数 据 结 构 进行 了讨论 . 最
( S c h o o l o f C o mp u t e r a n d I n f o r ma t i o n T e c h n o l o g y , B e i j i n g J i a o t o n g Un i v e r s i t y , B e i j i n g 1 0 0 0 4 4 , C h i n a )
Ab s t r a c t : Wi t h t h e d e v e l o p me n t o f t h e P 2 P t e c h n o l o g y,t h e P 2 P a p p l i c a t i o n o c c u p i e s l o t s o f n e t — wo r k b a n d wi d t h r e s o u r c e s .I d e n t i f i c a t i o n a n d c o n t r o l o f P 2 P t r a f f i c i s a h o t t o p i c n o wa d a y s . B a s e d o n t h e a n a l y s i s o f f o u r r e l a t e d t e c h n o l o g i e s ,a NDI S i n t e r me d i a t e d r i v e r b a s e d s u p e r v i s i o n s y s t e m i s p r o p o ed s ,a n d t h e e n t i t y c h a r a c t e r i s t i c s a r e i n t r o d u c e d i n d e t a i l .Th e s y s t e m i s r e a l i z e d b y u s i n g DDK P a s s t h r u r o u t i n e ,a n d t h e s h a r e d me mo r y c o mm u n i c a t i o n me c h a n i s m ,p a c k e t i n — t e r c e p t i o n me c h a n i s m a n d ma i n d a t a s t r u c t u r e a r e a l s o d i s c u s s e d .F i n a l l y,t h e e x p e r i me n t a l r e s u l t s o f t h r e e c o r l 2 r / l o n u s e d P 2 P a p p l i c a t i o n s s h o w t h e v a l i d i t y a n d u s a b i l i t y o f t h e s y s t e m.

219321351_NDIS中间层驱动在防御SQL注入攻击方面的应用

219321351_NDIS中间层驱动在防御SQL注入攻击方面的应用

文章编号:2095-6835(2023)11-0167-03NDIS中间层驱动在防御SQL注入攻击方面的应用李洋,刘婷(湖南信息职业技术学院,湖南长沙410200)摘要:随着Web系统日益普及,它面临的安全风险也越来越受到人们的重视。

以SQL(Structured Query Language,结构化查询语言)注入攻击风险为研究对象,在分析其攻击原理及归纳常见的防御手段后,提出了基于NDIS(Network Driver Interface Specification,网络驱动程序接口规范)中间层驱动的检测和防御技术,为防御SQL注入攻击提供理论参考。

关键词:Web系统;SQL注入攻击;NDIS中间层驱动;防御手段中图分类号:TP393文献标志码:A DOI:10.15913/ki.kjycx.2023.11.051随着信息技术日益发展,越来越多的团体或机构将日常业务放到Web系统上处理,这对Web系统的安全性提出了更高更严的要求。

然而,很多程序员在开发Web系统的过程中没有树立足够的安全意识,使得这些Web系统中或多或少存在着一些安全漏洞。

其中一个比较常见的是SQL注入漏洞,攻击者利用SQL 注入漏洞发起SQL注入攻击以达到窃取用户敏感数据的目的[1]。

本文在分析目前主流的防SQL注入攻击技术的基础上,提出了基于NDIS中间层驱动的防御SQL注入攻击的技术,并对此进行了详细阐述。

1SQL注入攻击以及常见的防御手段1.1SQL注入攻击的原理SQL注入攻击是常见的攻击Web系统的手段之一,非法用户利用程序员在编写代码时没有对用户输入数据的合法性进行漏洞判断,通过提交一段针对性强的数据库查询代码,就可根据程序返回的结果获得想获取的数据[2]。

由于SQL注入是从正常的WWW端口访问,表面上看起来与一般的Web页面访问没什么区别,因此部署在网络上的防御设备不会对这种渗透式的攻击发出警报,SQL注入也就很难在第一时间被发现。

NDIS中间层驱动程序解读

NDIS中间层驱动程序解读

NDIS中间层驱动程序解读第一次接触NDIS是四年前的事了,那时正在做本科毕业设计,题目就是写一块FDDI网卡的NT驱动程序,当时还是NT3.51+NDIS3呢!资料少得可怜,不知从哪里找了一张NT3.51DDK的光盘,如获至宝,夜以继日地研读,有许多地方不知所云,就生吞下去,以盘上唯一的以太网卡例程SONIC为蓝本进行改造,在完成绝大部分功能的编写调试后,终因时间和知识水平的限制,没能完成一个稳定的版本。

在以后的日子里,一直都在与DDK和NDIS打交道,写了几个象样的东西,对它们的了解也有所增加。

早就想把自己的一些心得体会记录下来,与广大同行交流交流,但都因自己的懒惰而没有付诸实现。

此间的斑竹与我有很深的渊源,最近一次见面他说希望我能写些东西以帮助他把这个版办得更好,我想这对我也正好是个促进,就答应了下来,结合我刚刚结束的一个工作,与大家讨论一下NDIS中间层驱动程序的工作原理和编写方法。

以下所写都是我个人的理解,如有不对之处,请大家直言指出,不胜感谢!好了,废话少说,言归正传。

发信人: oneseven (5417), 信区: SysInternals WWW-POST标题: NDIS中间层驱动程序解读(二)发信站: 武汉白云黄鹤站 (Sat Jun 17 22:27:36 2000) , 站内信件中间层驱动程序与其说是一种单独类型的驱动程序,不如说是巧妙地利用NT的网络组件绑定规则对操作系统的欺骗,它非常类似于UNIX的在流机制中压入一个中间处理模块,从原理上讲,它最为关键的地方就是修改NT系统原有的网络组件绑定规则,把自己嵌入已有的处理流程中,所以我想从BIND过程开始讨论。

在Jim matter提供的较早的IMSAMP中,没有提供完善的安装方法,而是在README中教大家手动修改注册表来完成安装,这种方法看起来不太地道(难怪微软没有把其收在DDK中发行)。

好在Jim matter在其后续的版本imdrv中弥补了这个不足,提供了一个INF文件来完成自动安装过程,这个长达112K的文件的确有些晦涩难懂,但是我们可以通过跟踪注册表的变化的方法来清楚地看到整个绑定过程。

基于NDIS中间层驱动的网络数据加密模型

基于NDIS中间层驱动的网络数据加密模型
on
increasingly prominent and the threat of hacking the information that transmit has posed more
the network
seriously.Within
the
enterprise
not
only to resist the interception
基于NDIS中间层驱动的网络数据加密模型
Data Encryption
on
Network Based
on
NDIS Intermediate Driver
Model
Abstract
With
the increasing development of Intemet technology,network security has become
system.The
USer
feel
system
encryption and decryption environment,it Can not read the
enterprise’S critical
of data.Once the data reception side without the received data.These indicate that the
1.2国内外研究状况
透明加密技术【3,41是近年来针对企业文件保密需求应运而生的一种文件加密技术。透 明是指它的加密过程对使用者来说是无法感知的,不需使用者手动的加解密。当使用者 操作文件时,如果该文件符合过滤加密规则,系统将自动对未加密的文件进行加密,对 已加密的文件自动解密。文件一旦离开使用环境,文件没有对应的系统环境进行解密就 是一个密文,从而起到保护文件内容的效果。透明加密具有以下特点: (1)强制加密:安装系统后,所有符合加密规则的文件都被强制加密; (2)使用方便:不影响原有操作习惯,不需要限止端口,不需手动操作; (3)于内无碍:内部有相同的系统环境,交流时不需要作任何处理便能交流; (4)对外受阻:一旦文件离开使用环境,文件将自动失效成为密文,从而保护知识

NDIS规范下的网络驱动程序设计

NDIS规范下的网络驱动程序设计

NDIS规范下的网络驱动程序设计
冯志林
【期刊名称】《杭州电子科技大学学报》
【年(卷),期】2001(021)004
【摘要】网络驱动程序接口规范(NDIS)是一个较为成熟的网络标准,它包含局域网络网卡驱动程序标准、广域网络驱动程序标准以及存在于协议和网卡之间的中间驱动程序标准.它的一个主要目的就在于将NDIS驱动程序中的一些公用代码提取出来,使得NDIS驱动程序只需和硬件特性有关的少量的代码即可,从而降低了开发的难度并能提高开发效率.本文介绍NDIS 驱动程序的类型,然后以NDIS微端口驱动程序为例介绍NDIS驱动程序的设计,最后介绍NDIS 驱动程序的应用.
【总页数】3页(P61-63)
【作者】冯志林
【作者单位】杭州电子工业学院计算机分院,
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.基于NDIS hook的Windows防火墙驱动程序设计 [J], 谭丹;鲜继清
2.基于WDM-NDIS体系的USB网卡驱动程序设计 [J], 杨家蓉
3.NDIS中间层驱动程序设计和虚拟专用网客户端的实现 [J], 徐大为;龚玲;杨宇航
4.基于WDM-NDIS体系的USB网卡驱动程序设计 [J], 杨家蓉
5.NDIS驱动程序研究和基于NDIS网络监测程序实现 [J], 孙华领; 顾景文
因版权原因,仅展示原文概要,查看原文内容请购买。

NDIS中间层驱动实现网页跳转

NDIS中间层驱动实现网页跳转

在编写windows网络驱动之前,需要具有必然的运算机网络知识。

包括OSI/ISO 七层体系结构,常见的网络协议TCP/TP, UDP,ICMP,HTTP,FTP,SMTP/POP3等。

因为整个windows网络驱动就是建立在网络协议栈基础之上的。

Windows网络驱动有两个重要的规范:TDI,NDIS。

TDI(Transport Driver Interface)传输层接口,顾名思义,那个技术是成立在传输层之上的。

传输层位于七层协议的第三次,常见的TCP/UDP协议就属于传输层。

咱们明白,传输层提供的服务包括:连接管理、过失检测、按端口号寻址。

事实上,TDI驱动主要作用就是过滤端口。

TDI是即将被淘汰的技术,微软宣布,vista以后的操作系统将再也不提供TDI支持,取代它的是Windows Filter Platform和Winsock Kernel,有兴趣的朋友能够搜集一下相关的资料。

这里注重分析一下NDIS驱动框架。

NDIS(Network Driver Interface Specification)网络驱动接口标准,相较TDI,它位于七层协议的更低层次。

能够捕捉更详细的信息。

能够做更多的事。

它是微软联合3com公司发布的一个标准。

NDIS网络驱动有3种表现形式:协议驱动、中间层驱动、小端口驱动。

它们的作用范围大致依照传输层、网络层、数据链路层依次往下排。

小端口驱动miniport,一般是网卡厂商提供,协议层驱动一般用来捕捉数据包,赫赫出名的winpcap就是基于协议层驱动编写,而本文主要关心中间层驱动。

WDK文档的例子中,提供了一个中间层驱动,我的电脑中的路径是C:\WinDDK\\src\network\ndis\passthru。

Passthru位于协议驱动和小端口驱动之间,比较灵活。

类似于它们两个的综合体。

它能捕捉所有流入流出本机的数据,超级强悍。

常见的个人防火墙大体都是用中间层驱动写的。

NDIS中间层驱动程序设计和虚拟专用网客户端的实现

NDIS中间层驱动程序设计和虚拟专用网客户端的实现
2 NDIS中间层实现原理
2.1 注册 在DriverEntry例程里,如图1所示。 (1)调用NdisIMRegisterLayeredMiniport,为NDIS中间层驱动程
序注册一套MiniportXxx回调函数,这样上层协议就认为中间层驱 动程序是网卡,并通过Ndis库,调用这些回调函数。
(2)调用NdisRegisterProtocol,为NDIS 中间层驱动程序注册一 套ProtocolXxx 回调函数,这样下层网卡就认为中间层驱动程序是 一个协议,并通过Ndis库,调用这些回调函数。 2.2Байду номын сангаас初始化
3 虚拟专用网客户端的实现
VPN 技 术 的 核 心 是 安 全 隧 道 技 术 (Secure Tunneling Technologies),即将用户待传输的信息通过加密、认证和协 议嵌套等附加的处理之后,在开放性的互联网络传输媒体中 业已建立的网络连接上模拟出一条虚拟的应用连接,在这条 应用连接的端点以内,用户信息以嵌套方式在开放性网络环 境中通过载体协议传输,而在该应用连接的端点以外,用户 信息被复原,以明文方式传输。由于用户数据经过处理,在 公用网络中传输的数据包即使被非法用户截获也无法正确理 解其中包含的信息。整个隧道连接采用对上层用户透明的方 式实现,用户不会感觉到隧道处理的存在。
图 2 NDIS数据包结构 NDIS缓冲区的分配与回收策略是采用谁分配谁回收的 准则,这样的结构层次很清晰,每个协议模块可以独立进行 内存管理,这就减少各模块之间的相关性。但是这样的实现 也带来了设计的复杂性。具体的实现过程是,当每个协议栈 将一个数据包交给下层或上层的时候,就暂时丧失了对该数 据包的所有权,当上层或下层协议完成数据包的处理后,调 用NDIS 函数,将数据包交还给该协议栈,该协议栈知道哪 些资源是自己分配的,所以可以完成对这些资源的回收。 实际上,几个Buffer Descriptor可以指向同一段Virtual Memory区。几个Packet也可以指向同一个Buffer Descriptor 链。这样,如果几个上层协议都关心收到的数据包,不需要 将数据包分别拷贝出来,直到核心态到用户态转换时,才进 行内存拷贝,这样就极大地提高了协议栈的性能。

基于NDIS的网络监控技术研究

基于NDIS的网络监控技术研究

基于NDIS的网络监控技术研究摘要:由于ndis中间驱动程序位于网卡和协议驱动程序之间,负责与网络的数据包交换,所以它可以截获较底层的封包。

本文描述了基于ndis网络监控体系结构,通过中间过滤驱动实现了对底层网络数据的监控,提出基于ndis中间驱动进行包过滤的原理,工作流程及实现方法,并依据相应的匹配算法和异常检测算法对从底层来的数据包进行包过滤,从而提高系统的监听效率,减轻高层应用对数据包的分析处理负担。

关键词:ndis中间层驱动程序,bslt匹配算法,异常检测,数据包过滤规则中图分类号:u672文献标识码: a 文章编号:一、前言近几年来,随着网络基础建设的完善,网络应用也迅速扩大,网络的迅速发展,给我们的工作和生活带来了巨大的改变。

然而,随着越来越多的用户接入互联网,网络信息安全问题却日益困扰和影响用户对互联网络的信任和使用。

由于互联网发展的历史原因,tcp/ip协议及http、ftp等基于tcp/ip协议的各种应用层协议,在协议设计之初均未考虑安全传输问题。

国际标准组织虽陆续推出了ssl、http1.1等具有安全传输能力的应用层协议,但作为应用层承载协议的tcp/ip协议仍存在着固有的安全缺陷,造成至今未能有彻底的、低成本的、不需硬件支持的互联网安全传输解决方案。

正是由于网络传输存在安全问题,如今攻击网络系统和窃取信息已经不需要什么高深的技巧,越来越多的黑客加入到网络攻击技术的研究行列中,给网络安全带来越来越多的安全隐患。

利用ndis中间驱动可以在网卡驱动程序和传输驱动程序之间插入一层自己的处理,从而可以从截获网络封包并重新进行封包、加密、网络地址转换及过滤等操作。

由于ndis中间驱动程序位于网卡和传输驱动程序之间所以它可以截获较为底层的封包从而可以完成更为低级的操作以及用来编写网络安全软件安全系数也高。

二、基于ndis网络监控系统体系结构的分析ndis[3](network driver interface specification,网络驱动程序接口规范)是微软公司为windows系列平台开发网络驱动程序而制定的。

基于ndis protocol driver技术介绍

基于ndis protocol driver技术介绍

基于ndis protocol driver技术介绍
基于NDIS(网络设备接口规范)协议驱动程序是一种用于开发网络设备驱动程序的技术。

NDIS协议驱动程序使网络设备能够与操作系统进行通信,以便数据包的传输和网络连接的管理。

NDIS协议驱动程序的主要功能包括以下几个方面:
1. 硬件抽象层:NDIS协议驱动程序提供了一个硬件抽象层,将不同类型的网络设备抽象为统一的接口。

这样,操作系统就可以通过相同的接口与不同类型的网络设备进行通信,而无需考虑具体的硬件细节。

2. 协议支持:NDIS协议驱动程序提供了对常用网络协议(如TCP/IP、IPX/SPX等)的支持。

它通过实现相应的协议驱动,使得网络设备可以通过这些协议与其他设备通信。

3. 数据包传输:NDIS协议驱动程序负责管理网络设备和操作系统之间的数据包传输。

它将从网络设备接收到的数据包传递给上层协议驱动程序,或者将从上层协议驱动程序接收到的数据包发送到网络设备。

4. 网络连接管理:NDIS协议驱动程序负责管理网络设备的连接状态。

它可以监测网络设备的连接状态,并通知操作系统和应用程序有关连接状态的变化。

5. 性能管理:NDIS协议驱动程序可提供有关网络设备性能的信息,例如网络流量、传输速度等。

这些信息可以帮助操作系
统和应用程序调整网络配置和优化网络性能。

需要注意的是,开发基于NDIS协议驱动程序的技术需要熟悉操作系统的内核编程和网络协议的相关知识。

对于普通应用程序开发者而言,了解NDIS协议驱动程序的工作原理和基本概念可以帮助他们更好地理解网络设备驱动程序的工作机制。

Windows的NDIS内部结构总结

Windows的NDIS内部结构总结

【转】 Windows的NDIS内部结构总结2011-10-30 18:07转载自分享最终编辑jonathan2004author: jonathan本文档的CopyRight归jonathan所有,可自由转载,转载时请保持文档的完整性。

/*---------------------------------------------------------------------------------------------------------------------*/N年前的整理的资料,感觉还有价值,这里列出。

Windows的NDIS中重要的数据结构是NDIS_PROTOCOL_BLOCK,每一个网络协议通过NdisRegisterProtocol注册一个NDIS_PROTOCOL_BLOCK结构。

系统内部所有的协议NDIS_PROTOCOL_BLOCK组成一个单向链表,后注册的协议NDIS_PROTOCOL_BLOCK结构注册在表头。

NDIS_PROTOCOL_BLOCK随着NDIS和操作系统的版本在变化。

1 主要数据结构1.1 NDIS_PROTOCOL_BLOCKstruct _NDIS_PROTOCOL_BLOCK{_NDIS_OPEN_BLOCK* OpenQueue;_REFERENCE Ref;_KEVENT* DeregEvent;_NDIS_PROTOCOL_BLOCK* NextProtocol;_NDIS50_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics;_WORK_QUEUE_ITEM WorkItem;_KMUTANT Mutex;DWORD MutexOwner;_UNICODE_STRING* BindDeviceName;_UNICODE_STRING* RootDeviceName;_NDIS_M_DRIVER_BLOCK* AssociatedMiniDriver;_NDIS_MINIPORT_BLOCK* BindingAdapter;};typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK,*PNDIS_PROTOCOL_BLOCK;1.2 _NDIS_OPEN_BLOCK_NDIS_OPEN_BLOCK起到承上启下的作用,是协议层和网卡之间的数据传输的通道。

NDIS网络驱动程序的研究与实现

NDIS网络驱动程序的研究与实现

NDIS网络驱动程序的研究与实现李晓莺;曾启铭【摘要】分析了NDIS网络驱动程序的种类及NDIS的特点,给出了一个NDIS网络驱动程序的例子--网络数据包采集驱动程序.【期刊名称】《计算机应用》【年(卷),期】2002(022)004【总页数】2页(P60-61)【关键词】NDIS;VxD;网卡驱动程序;协议驱动程序;中间驱动程序【作者】李晓莺;曾启铭【作者单位】中国工程物理研究院计算机应用研究所,四川,绵阳,621900;中国工程物理研究院计算机应用研究所,四川,绵阳,621900【正文语种】中文【中图分类】工业技术第 22 卷第 4 期 2002 年 4 月计算机应用Computer ApplicationsVol.22,No.4Apr.,2α)2 文章编号: 1001 -佣81(2002)04 -α削-但NDIS 网络驱动程序的研究与实现李晓莺,曾启铭(中国工程物理研究院计算机应用研究所,四 Jl) 绵阳 621900)摘要:分析了 NDIS 网络驱动程序的种类及 NDIS 的特点,给出了一个 NDIS 网络驱动程序的例子一一网络数据包采集驱动程序 c关键词:NDIS;VxD ;网卡驱动程序;协议驱动程序;中间驱动程序中固分类号: 1P393文献标识码:A1引言 NDIS( Network 岛iver InterlaceS伊C迫cation )是Micm皿丘和3句n 公司开发的网络驱动程序接口规范的简称。

它为 Windo回下网络驱动程序的开发带来许多方便。

编写符合 NDIS 规范的驱动程序时,只要调用阳IS 函数,而不用考虑操作系统的内核以及与其他驱动程序的接口问题,为操作系统对不同网络的支持提供了方便。

2 NDIS 网络驱动程序及其特点2.1 NDIS 网络驱动程序NDIS 定义了网卡或网卡驱动程序与上层协议驱动程序之间的通信接口规范,它屏蔽了底层物理硬件的不同,使上层的协议驱动程序可以和底层任何型号的同卡通信。

NDIS中间层驱动技术在反溯源网络中的应用

NDIS中间层驱动技术在反溯源网络中的应用

NDIS中间层驱动技术在反溯源网络中的应用张宇宁【摘要】采用NDIS中间层驱动技术构筑反溯源网络,可在一定程度上确保网络及个人信息安全。

介绍NDIS的含义及NDIS中间层驱动技术的原理,阐述NDIS 中间层驱动程序的设计与实现方式。

经效果测试,证实利用NDIS中间层驱动技术对数据包进行传输,能很好地保证网络安全性。

%Using NDIS intermediate driver technology to build anti source network can ensure the security of the network and personal information to a certain extent. This article explains the definition of NDIS and the principle of NDIS intermediate layer driver technology. The author describes its design and implementation methods. The effect test confirmed that the use of NDIS intermediate driver technology to send data packet can ensure network security.【期刊名称】《农业科技与装备》【年(卷),期】2014(000)002【总页数】2页(P51-52)【关键词】反溯源;NDIS;中间层驱动;防火墙穿透;应用【作者】张宇宁【作者单位】65040部队,沈阳 110005【正文语种】中文【中图分类】TP393.08在人们享受计算机网络技术发展为生活带来的便利的同时,各种溯源技术的应用使人们在互联网中的行为变得透明。

为了确保网络和信息安全,构筑反溯源网络显得尤为重要。

基于NDIS中间层驱动的网络数据加密模型的开题报告

基于NDIS中间层驱动的网络数据加密模型的开题报告

基于NDIS中间层驱动的网络数据加密模型的开题报告一、选题背景和意义随着信息化和数字化的不断推进,网络安全问题越来越突出,网络数据加密已成为确保网络安全的重要手段。

在网络数据传输过程中,敏感数据易被恶意攻击者窃取和篡改,因此对数据进行加密便显得尤为重要。

NDIS是Windows操作系统中的一个网络驱动程序接口,其通过中间层驱动程序将工作卸载到硬件驱动程序中,可以提高网络性能和安全性。

本研究基于NDIS中间层驱动,探索一种网络数据加密模型,以提高网络数据传输安全性。

二、研究目标本研究的主要目标是基于NDIS中间层驱动程序开发一种网络数据加密模型,能够对网络数据进行加密处理,提高网络安全性。

具体研究目标如下:1、基于NDIS中间层驱动程序实现网络数据流量的拦截和过滤。

2、探索一种高效的加密算法,对网络数据进行加密。

3、利用NDIS中间层驱动程序实现加密数据的传输和接收。

4、对比实验验证本研究所提出的网络数据加密模型与传统加密方法的安全性及性能方面的优劣。

三、研究内容1、NDIS中间层驱动程序的原理及其在网络安全中的应用。

2、网络数据加密算法的原理及其在网络安全中的应用。

3、基于NDIS中间层驱动程序的网络数据加密模型的设计与实现。

4、利用实验数据对比传统加密方法与本研究所提出的加密模型的安全性及性能优劣。

四、研究方法本研究主要采用实验研究方法,具体步骤如下:1、分析NDIS中间层驱动程序的原理及其在网络安全中的应用。

2、研究网络数据加密算法的基本原理及其在网络安全中的应用。

3、基于NDIS中间层驱动程序,设计并实现网络数据加密模型。

4、通过实验对比传统加密方法与本研究所提出的加密模型在安全性和性能方面的优劣。

五、预期结果通过本研究,预期可以得到以下结果:1、设计并实现一种基于NDIS中间层驱动程序的网络数据加密模型,提高网络数据传输的安全性。

2、通过与传统加密方法的对比实验,验证本研究所提出的网络数据加密模型在安全性和性能方面的优劣。

基于NDIS过滤驱动防火墙的设计和实现

基于NDIS过滤驱动防火墙的设计和实现

基于NDIS过滤驱动防火墙的设计和实现王亚伟【期刊名称】《软件工程师》【年(卷),期】2016(019)011【摘要】Windows as the most popular individual operating system.The research of firewall in the windows environment has certain practical significance.Host firewall packet filtering algorithm is linear search,its performance will only get worse and worse with the increase of ifltering rules,in order to improve the running speed of the ifrewall,the illegal packet interception ability,in this paper,a ifltering algorithm based on HASH double linked list,and by analyzing and comparing Windows environment network packet interception technology,developed a ifrewall software,based on NDIS6.0 ifltering lfooding,after test,it has strong ability to intercept illegal packet.%Windows作为时下最流行的个人操作系统,研究Windows环境下的防火墙有一定的现实意义。

主机防火墙的数据包过滤算法是线性查找,其性能会随着过滤规则的增加而变得越来越差,为了提高防火墙的运行速度,对非法数据包的拦截能力,提出一种基于HASH双链表的过滤算法,并且通过分析、比较Windows环境下网络数据包的拦截技术,开发了一款基于NDIS6.0过滤驱防火墙软件,经过测试,它对非法数据包具有强大的拦截能力。

基于NDIS中间层驱动的数据采集模块研究与设计

基于NDIS中间层驱动的数据采集模块研究与设计

基于NDIS中间层驱动的数据采集模块研究与设计曹丽;陈姝【摘要】本文介绍了Windows平台下基于NDIS中间层技术实现入侵检测中数据采集模块的设计方法。

并引入了协议分析技术,提出了一种新的入侵检测模型。

本文对数据采集模块和协议分析模块进行了设计和仿真,并利用协议分析模块完成了对几种常见攻击的检测。

%Based on the NDIS intermediate layer driver in Windows,a method in which IDS is implemented was presented in the article.And a model of IDS is designed based on Protocol Analysis.The modules of packet capture and Protocol Analysis are implemented,and some attacks are detected based on the Protocol Analysis.【期刊名称】《电子测试》【年(卷),期】2014(000)008【总页数】3页(P5-7)【关键词】NDIS中间层驱动;数据采集;协议分析;防火墙穿透【作者】曹丽;陈姝【作者单位】渤海大学,辽宁锦州,121000;辽宁省基础测绘院,辽宁锦州,121000【正文语种】中文0 引言在各种的网络安全手段中,入侵检测系统发挥着重要的作用。

在这个过程中,入侵检测技术也得到了迅速的发展,随之入侵检测算法也不断涌现和完善。

在当今社会,随着现代网络技术的迅猛发展,现存的网络入侵检测系统正面临着越来越严峻的挑战。

网络的主机在不断地增多,网络的速度在飞速地提高,网络的带宽在不断地增大。

就需要配套的网络入侵检测系统。

提高已有系统的入侵检测的速度,减少已有系统的丢包率,成为现代网络入侵检测领域急待解决的问题。

另外亟待解决的问题还有入侵检测系统的误报与漏报现象等。

基于NDIS的摄像机驱动程序设计和实现的开题报告

基于NDIS的摄像机驱动程序设计和实现的开题报告

基于NDIS的摄像机驱动程序设计和实现的开题报告摘要:本文介绍了一种基于NDIS的摄像机驱动程序的设计和实现方法。

首先,介绍了摄像机的一般原理,然后详细讨论了驱动程序的设计过程,包括驱动程序的结构、接口、流程和数据结构。

接着,介绍了驱动程序的实现方法,包括程序的编写、测试和调试过程。

最后,给出了实验结果和分析。

实验结果表明,所设计和实现的基于NDIS的摄像机驱动程序在性能和可靠性方面均能满足要求。

关键词:摄像机;驱动程序;NDIS;接口;流程;数据结构1. 研究背景和意义随着计算机技术和网络技术的迅速发展,摄像机在安防、交通、教育、医疗等领域广泛应用。

摄像机驱动程序是实现摄像机和计算机之间通信的关键组成部分,它的性能和可靠性直接影响着摄像机的使用效果。

因此,研究基于NDIS的摄像机驱动程序的设计和实现方法,对提高摄像机的性能和可靠性具有重要意义。

2. 驱动程序的设计2.1 结构设计基于NDIS的摄像机驱动程序的结构如图1所示。

驱动程序主要由三部分组成:驱动程序框架、NDIS驱动程序和功能模块。

2.2 接口设计驱动程序提供的接口包括初始化接口、中断处理接口、数据传输接口、控制接口等。

2.3 流程设计基于NDIS的摄像机驱动程序的流程如图2所示。

2.4 数据结构设计驱动程序需要维护的数据结构包括缓冲区、环形缓冲区、命令队列、状态机等。

3. 驱动程序的实现3.1 程序的编写基于NDIS的摄像机驱动程序主要使用C和C++语言进行编写。

程序的开发环境为Visual Studio。

3.2 测试和调试为保证驱动程序的正确性和稳定性,需要进行充分的测试和调试。

测试工具主要包括NDISTest、NDISIM等。

4. 实验结果和分析经过测试和调试,所设计和实现的基于NDIS的摄像机驱动程序在性能和可靠性方面均能满足要求。

程序运行稳定,数据传输速度较快。

此外,通过对NDIS驱动程序的开发,掌握了NDIS接口的使用方法和NDIS驱动程序的开发技术。

Windows NT下的NDIS中间驱动程序的设计

Windows NT下的NDIS中间驱动程序的设计

Windows NT下的NDIS中间驱动程序的设计
饶文碧;陈旭辉;方复兴
【期刊名称】《计算机技术与发展》
【年(卷),期】2002(012)001
【摘要】Windows NT平台下的NDIS中间驱动程序(IMD),主要用于不同网络媒体的连接、网络数据包的过滤和多个网卡的负载平衡.分析其结构特点,并就其在Windows NT下的开发方法进行讨论,最后给出一个应用实例.
【总页数】3页(P66-68)
【作者】饶文碧;陈旭辉;方复兴
【作者单位】武汉理工大学计算机科学与技术学院,湖北武汉,430070;武汉理工大学计算机科学与技术学院,湖北武汉,430070;武汉理工大学计算机科学与技术学院,湖北武汉,430070
【正文语种】中文
【中图分类】TP393.09;TP311.52
【相关文献】
1.WindoWs NT4.0环境下数据采集卡设备驱动程序的设计 [J], 吴海菁;吴江;吴瑛
2.Windows NT环境下缓存磁盘技术驱动程序的设计与实现 [J], 姜戬;谢长生;贺军
3.windows nt环境下fddi网卡驱动程序设计 [J], 马研
4.windows NT环境下fddi网卡驱动程序设计 [J], 陈晔桦
5.windows NT环境下fddi网卡驱动程序设计 [J], 陈晔桦
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NDIS驱动框架探究By AntBeanFearless,Passion,Endure在我看来NDIS驱动有几个难点:1.框架难,NDIS驱动的整体框架跟接触的文件过滤驱动很不一样,你需要考虑的比较多,整个框架的堆叠不再是向文件过滤驱动那样,使用AttachDevice堆叠设备,然后IoCallDriver传递请求;2.硬件操作的敏感性,网卡设备的热插拔,电源状态的变化都会影响到驱动程序;3.系统资源使用的敏感性,NDIS驱动本身是要收包发包,网络包的数据量是非常大的,如果在分配网络封包时没有及时释放,很有可能导致系统资源不足。

本篇文章主要对NDIS驱动框架进行探究。

在介绍内容之前,先说明一些概念。

1.面向连接的网络和无连接的网络与面向连接的协议和无连接的协议面向连接的网络是指通过电路交换进行的局域网。

一台机器如果需要给另外一台机器发送信息,就需要先像打电话一样呼叫另外一台机器,另外一台机器可以接受或者拒绝。

一旦接受,就会使用一个专用的线路维持该连接。

该连接的容量是固定的,而且只归该连接所有。

这种局域网最典型的例子是A TM网络。

无连接的网络是指通过分组交换传输信息的局域网。

一台机器如果给另外一台机器发送信息,需要传输的数据组织成一个分组,发送出去。

所有正在通信的计算机共用一个连接。

典型的例子是以太网和FDDI。

(参见《用TCP/IP进行网际互联第四版》第一卷第二章底层网络技术回顾)以上的面向连接和无连接针对的是物理上的网络硬件,属于OSI七层模型中的物理层;而面向连接的协议和无连接的协议则是针对协议的,与硬件是无关的,属于协议层。

常见的面向连接的协议有TCP协议,无连接的协议有UDP协议。

2. 电源状态D0 D1 D2 D3ACPI规定,设备处于四种状态之一,D0到D3。

D0是完全打开,D3是完全关闭。

D1和D2由驱动程序自己定义。

(参见《深入解析windows操作系统第四版》第九章第五小节电源管理器)3.序列化NDIS驱动和非序列化NDIS驱动对NDIS驱动的请求不再是IRP的形式,而是Packet的形式。

其他驱动例如TDI驱动通过NDIS库函数如NdisSend向NDIS驱动发送请求,事实上NDIS库会对Packet进行排队,保证对NDIS驱动的调用是串行的,一个Packet处理完才会发送另一个Packet给NDIS驱动。

这样的NDIS驱动就叫做序列化的NDIS驱动。

而一个非序列化的NDIS驱动则是指,NDIS库不负责对Packet进行排队和串行化,需要NDIS驱动自己处理同时多个Packet请求的情形。

排队和管理多个并发请求的任务落到了NDIS驱动程序的头上。

(参见《深入解析windows操作系统第四版》第十三章第六小节NDIS驱动程序)NDIS驱动本身分为两种,Protocol Driver和Miniport Driver。

至于NDIS中间层驱动,则是由前两种演化而来。

Miniport Driver用来驱动网卡,Protocol Driver是协议驱动,负责将要发送的数据组装成符合特定Protocol的网络封包然后调用Miniport Driver提供的发送功能完成发送。

也就是说,Protocol Driver和Miniport Driver具有实质意义上的堆叠关系。

Protocol Driver负责网络数据的封包,以及封包的解析获得;而Miniport Driver负责提供物理硬件上的驱动,保证数据包能够正常收发,并通知上层的Protocol Driver。

Miniport Driver和Protocol Driver并不是通过普通意义上的IoAttachDevice进行叠加的。

而是通过NDIS库进行粘合的。

NDIS库要求Miniport Driver和Protocol Driver各自提供符合NDIS要求的接口,供NDIS库在运行时调用。

这个过程类似于C++中的虚函数。

NDIS库要求这Protocol Driver和Miniport Driver各自实现自己那个类的虚函数,而NDIS库自己则是直接调用这些虚函数去完成操作。

下面照样是用具体的代码说事儿。

我将使用ReactOS上面的代码来分析NDIS驱动和NDIS 库之间的关系。

当然,主要参考了毛德操老师的《windows内核情景分析》和ReactOS 0.3.1的代码。

下面如无特殊说明,windows内核均指ReactOS的代码,代码均摘自ReactOS 0.3.1。

必须先声明的是,我不会试图去分析NDIS驱动框架的各个方面。

我将只针对NDIS驱动的初始化和NDIS驱动接收包发送包的流程来说明NDIS库和NDIS驱动的关系。

NDIS驱动初始化过程探究1、miniport driver初始化过程以下代码来自ReactOS提供的NE2000网卡驱动模块。

这是一个典型的实际的miniport 驱动。

为何没有使用先前分析的NDISWDM那个miniport驱动进行框架分析,是因为那是一个虚拟网卡的驱动。

这里采用实际的物理NIC驱动进行分析。

(ReactOS -0.3.1\\Drivers\\Network\\DD\\Ne2000\\Main.c DriverEntry函数)这是我们常见的minport驱动的开头。

把CHARACTERSISTICS中的各个函数指针赋值,然后Register一下。

从ddk中我们很容易就知道MiniportInitialize作为初始化函数会被调用,但事实上,你知道,即使到DriverEntry的末尾,也没有调用CHARA TERISTICS中的任意一个函数。

那问题就是,Miniport的初始化函数到底是何时在哪儿被调用的?好了,面对这个暂时无解的问题,我们唯一的解决方案就是弄清楚NDIS库到底在背后做了些啥我们不知道的事情。

第一反应阅读NDIS库的NdisMRegisterMiniport函数。

刚才我们看到的是一个别人写的miniport驱动的代码,下面我们就会切换到windows 内核当中,查看它里面的NDIS库到底做了啥。

Drivers\\network\\ndis\\ndis\\Miniport.c 函数NdisMRegisterMiniport可以看到,这里先是从传入的NdisWrapperHandle中获得PNDIS_M_DRIVER_BLOCK 然后给该BLOCK的CHARACTERISTICS赋值。

这些都比较简单。

最重要的是,设置了该BLOCK 中的DriverObject的MajorFunction的IRP_MJ_PNP和AddDevice函数。

现在我们来看看,这个唯一支持的IRP_MJ_PNP干啥了。

在该函数中,调用了十分可疑的NdisIPnpStartDevice。

继续跟踪该函数。

我相信你已经看到了那个指针的调用。

这里情况就很明白了,操作系统调用完DriverEntry 后,发送了一个IRP_MJ_PNP的请求,启动miniport设备并调用了miniport的InitializeHandler。

NDIS库所做的就是在注册时默默的为miniport驱动提供了一个IRP_MJ_PNP的操作函数,并默默地调用注册的Characteristics的InitializeHandler。

2、protocol driver初始化过程这里使用ReactOS中提供的协议驱动局域网lan的代码。

drivers\\network\\lan\\lan\\Lan.cDriverEntry中调用了LANRegisterProtocol,下面直接看LANRegisterProtocol同样,也是准备一个Charateristics,然后注册,也是没有看到其中哪个函数的调用。

这回你应该清楚了,我们需要看看NDIS库的NdisRegisterProtocol到底干啥了。

drivers\\network\\ndis\\ndis\\Protocol.c 函数NdisRegisterProtocol该函数中有个For循环,针对从注册表读到的值调用该循环,你仔细看看该循环就会懂得。

该循环中,有个地方你没看错,那就是BindHandler的调用。

在NdisRegisterProtocol中,针对已经存在的每个miniport,调用了注册的BindHandler。

这就是NDIS库为我们做的。

现在,我想你应该已经明白,如果要看Miniport Driver的初始化过程,你应该先读了DriverEntry,然后去读InitializeHandler函数;而如果你要看Protocol Driver的初始化过程,你应该先读了DriverEntry,然后去读BindHandler函数。

这才是完整的初始化过程。

NDIS驱动收包过程探究收包的触发过程,想想也知道首先是网卡收到包后产生一个中断,然后触发上层读取该包。

下面我们将联系刚才的那个miniport driver来看整个过程是怎样在miniport driver和protocol driver中流动的。

在以上miniport driver的初始化过程中一节看到的DriverEntry函数指定了该NIC的中断延迟处理函数为MiniportHandleInterrupt。

下面读该函数。

该函数中根据中断的类型,调用了HandleReceive函数。

HandleRecevie中调用了NICReadPacket,而NICReadPacket又调用了NICIndicatePacket,NICIndicatePacket中又调用了NdisMEthIndicateReceive。

到此为止,我们先分清一下虚实。

这个NdisMEthIndicateReceive是由NDIS库提供的函数。

表示一个以太网封包到了。

显然,我们写的以太网网卡的miniport driver的任务已经完成了。

它在自己的中断延迟处理函数中读取了该Packet,并调用了NdisMEthIndicateReceive通知上层说收到网络封包了。

问题就变成了,当miniport driver调用了NdisMEthIndicateReceive进行通知时,NDIS库到底做了啥,让上层读取该封包的?现在看NdisMEthIndicateReceive。

这是一个宏,指向的是PNDIS_MINIPORT_BLOCK中的EthRxIndicateHandler指针。

该函数指针到底指向哪个函数呢?前面其实我们已经在NdisIPNPStartDevice中见到过。

好吧,你别晕,虽然我也有点晕。

返回去看看,其实指向的是EthFilterDprIndicateReceive()。

再看看该函数干嘛了。

其实也就是调用MiniIndicateData。

相关文档
最新文档