yangyb_628
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2520回复:12

ip包拦截的问题

楼主#
更多 发布于:2004-04-28 17:54
我现在要做一个基于2K拦截完整ip包的东东(不包含MAC头),可是我不知道从那里下手,用什么开发。
前一段时间用NDIS进行数据包拦截,但由于这是工作在数据链路层的,所以得到的是以太网帧,这不符合现实要求。
--------------------
我的要求是:在网络层上得到系统刚生成的ip包,然后进行对数据报的处理。这样可以将修改后的ip包的分片和重组问题仍然交给系统本身来处理。
另外,我是要做数据包的拦截,就是不能让未经修改的数据包流出网卡。去年用winpcap做过抓包,但是只能将发出的数据包复制一份在内存,并不能将它拦下来。


------------------
已知至少有3种拦截数据包的方法:
1、TDI过滤驱动程序(TDI Filter Driver)

看过一点TDI filter的东西,工作在传输层的,是不是也不符合上面的要求,能不能通过TDI过滤驱动程序创建DeviceRawIp设备拦到ip包?我不太清楚,还请指教!

2、Win2k Filter-Hook Driver

windows2000 包过滤接口是不是上面讲的filter-hook?
filter-hook是不是只能对接受的包进行处理,而对发送的包只能读取报头信息?
3、NDIS中间层驱动程序(NDIS Intermediate Driver)
已排除
------------------

各位大虾帮忙看看!!!


 
zxcasd
驱动牛犊
驱动牛犊
  • 注册日期2001-06-14
  • 最后登录2007-08-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-28 19:06
从你上面提到的三点看,我个人认为3好于1好于2(不知道你为什么放弃第三种方法)。从官方角度看第三中方法最好,非官方的话还有ndishook也不错。
死了都要爱......
yangyb_628
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-28 21:47
其实,据说TDI过滤驱动程序拦截的是传输层的包也就是UDP和TCP.我想知道的是,能不能通过TDI过滤驱动程序创建DeviceRawIp设备拦到ip包(是网络层的包,不带MAC头)?或者有没有其他能拦截网络层IP包的方法。
之所以排除用NDIS中间层驱动程序。是因为我要实现IPSEC。基于PASSTHRU的AH认证传输已经可以工作,但发现有两个问题:
1,每个以太网帧能传输的数据太小只有1514个字节。
2,一个以太网帧加密后,不可避免将增长。如果超过1514个字节后传输将会出错。除非你手动分帧组帧,那将是非常痛苦的事。如果在网络层做处理那就省事多了.

ndishook拦截的似乎也是一个以太网帧。
谢谢你的回复。肯请再次援手。



[编辑 -  4/29/04 by  yangyb_628]
sunshine
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2005-05-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-10 10:15
我正在做拦截以太网的包,还没一点头绪,能不能告诉我怎样实现的阿,需要写NDIS驱动吗?wshwang@mail.xidian.edu.cn
zeusares
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2004-08-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-17 17:35
你看看这个兴许有些帮助。http://www.vckbase.com/document/viewdoc/?id=1067
作者:Jesús O很强的,CODE PROJECT有许多类似的文章
附件名称/大小 下载次数 最后更新
2004-05-17_fire.rar (270KB)  40
youngyt
驱动牛犊
驱动牛犊
  • 注册日期2003-11-23
  • 最后登录2006-12-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-17 17:39
楼主的话说的有点莫名其妙了,既然你都得到了链路层的包了,这已经够我们臭屁好久了,你要IP层的包就把MAC头去掉罗~~~

ammehrb
驱动牛犊
驱动牛犊
  • 注册日期2003-07-02
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-18 12:29
楼主的话说的有点莫名其妙了,既然你都得到了链路层的包了,这已经够我们臭屁好久了,你要IP层的包就把MAC头去掉罗~~~

 


戴上口罩,yangyb_628是想把ip包的分片和重组问题仍然交给系统本身AUTO处理。。。
start
驱动小牛
驱动小牛
  • 注册日期2001-11-05
  • 最后登录2010-09-03
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望27点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-18 13:58
非常关注
second
yangyb_628
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-20 11:42
很感谢大家的关注.最近忙着整理一些加密认证算法,很久没上网了.
本以为这贴子就这样遗忘了.:-)  
我觉得ipsec是为ip数据包提供保密性和其他安全服务的,在网络层实现ipsec当然是最规范的.但在WINDOWS苦于找不到这样的接口在网络层实现.
我不知道有没有谁在网络层实现ipsec的?当然除了微软.
LINUX下倒是有现成FREEWAN源码,实在不行就先看它了.但WINDOWS下的这个问题迟早得解决的.以前就有人讨论过,好像没有合适的答案.
很希望大家来积极探讨.
zeusares 很感谢你提供的资料!代码我正准备细看.但我觉得有几点疑问:
1.使用Filter-Hook Driver似乎只能对接受的包进行处理,而对发送的包只能读取报头信息?
2.还有使用HOOK技术是不是效率不够好?

asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-05-20 12:21
我用IMD实现的IPSEC,应该是属于网络层吧,可能稍微靠下点。
youngyt
驱动牛犊
驱动牛犊
  • 注册日期2003-11-23
  • 最后登录2006-12-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-05-20 19:37
其实IPSEC包没什么神秘的,你不一定要按他的标准去做。我实现的IPSEC的格式和标准差很多。要注意几点:
1.最外面的IP头部中的协议号要是32,不然这个包过不了路由;
2.IPSEC当然要加密了,用传输方式还是隧道方式看需要决定。前一种不用封装新的IP头,后一种要加上一个新IP头部;
3.完整性保护,也就是摘要,这个可以视情况加与不加。
yangyb_628
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2005-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-05-20 21:50
用IMD实现的IPSEC所处理的应该是数据帧,它具有MAC头,而且包大小都是限制在1514字节内.通常我们在IMD处理数据帧一般都是撇开MAC头对帧头以后的数据进行处理.
我觉得在IMD实现Ipsec最主要的是不规范,牵涉到包括帧大小限制,加密强度限制等.
在网络层处理ip包则可以让我们专心于实现协议本身的东西,真正做到与底层设备无关.
我在论坛上搜到一篇帖子,所提出的问题和我想知道的好像差不多,但感觉比我表达的更详细,大家有兴趣可以看一下:
http://www.driverdevelop.com/forum/viewthread.php?tid=3416
强烈建议大家关注这个问题.
youngyt
驱动牛犊
驱动牛犊
  • 注册日期2003-11-23
  • 最后登录2006-12-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-05-21 15:45
差不多吧,我已经实现了IPSEC了,包括抗重放、加密和鉴别三个安全功能。
游客

返回顶部