kellyli
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4412回复:35

想在2000下的kernel过滤包

楼主#
更多 发布于:2002-05-24 13:16
我现在已经有了winpcap,它里面采用的是BPF过滤机制。想不用BPF来过滤,自己在下面的driver实现过滤,应该怎么做才可以呢?是不是在它下面的PacketRead或者Packet_tap改动就可以,改了以后在NTDDK下编译是否就可以了??要用softice来调试么??我愿意高分请教!真的很急,小女子这里谢谢大家了!

最新喜欢:

luke_gemluke_g...
tonyhong
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2004-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-31 15:36
如果是抓包的话,何必搞的那么麻烦呢,你到网络上找那个isniffer的源程序吧,是delphi的,用zpacket.vxd的,改动一下还可以有发包的功能啊。



好像是只能在win98下的,win2k就不行了阿
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-28 12:23
可是,即使是在应用层设置条件,到了kernel level也还是调用BPF Filter来做,效果是一样的,而且说过了,老板不要用BPF FILter来过滤!555
我也不想做驱动呀,没办法呀!所以大家多多帮助!


他跟BPF FILTER 有仇那就没办法了。:)
按第一贴的“给分”键,给分。
kellyli
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-28 11:23
可是,即使是在应用层设置条件,到了kernel level也还是调用BPF Filter来做,效果是一样的,而且说过了,老板不要用BPF FILter来过滤!555
我也不想做驱动呀,没办法呀!所以大家多多帮助!
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-28 10:45
你假如使用winpcap的话,再文档里有这样的说明,即在应用层设过滤条件的话,不符合条件的packet根本就不会传上来。也不会传到driver的buffer里。所以你在driver里做和在app里做原理上应该是一样的。但编程难度可差远啦。
按第一贴的“给分”键,给分。
lyabcd
驱动大牛
驱动大牛
  • 注册日期2001-08-09
  • 最后登录2015-10-01
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-28 10:44
你到 www.safe123.com 的论坛看看吧,他们的防火墙基于im实现的
datongguandian@sina.com
kellyli
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-28 10:32
BPF Filter是一个标准的过滤技术,我们目前的项目没有用到BPF Filter。主要是因为我们所需要的过滤条件比较多而且复杂,而且有些是动态的过滤条件。如果采用BPF过滤,要实现动态过滤的话,必须每次重新写BPF过滤表达式在进行编译(BPF内部有个过滤虚拟机),而且对于过于复杂的过滤条件,效率较低。BPF的主要优点在于它的标准性和灵活性。我们自己做的话,就需要在网卡驱动程序一收到包就进行过滤(中断处理函数中),这样能够最大程度减少系统要处理的数据量。我不知道在windows下能否做到这一点。如果网卡驱动中断处理函数中无法做到的话,至少要在kernel内做。
我们要求的过滤条件是可设置的,一般为按ip地址,端口号进行过滤,同时过滤掉非IP,非UDP,非TCP的数据包,以及无内容的TCP ACK包。

我们老板的话!
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-28 10:20
可是我并不想用pcap的BPF Filter!哎!

冒昧的问一句:你或者你的老师之中有人认真仔细的看过pcap的文档吗?
本来这话不应该问的。但好像问题出在这里。
按第一贴的“给分”键,给分。
kellyli
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-05-28 09:50
可是我并不想用pcap的BPF Filter!哎!
lyabcd
驱动大牛
驱动大牛
  • 注册日期2001-08-09
  • 最后登录2015-10-01
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-05-28 09:43
你可以参看著名的免费入侵检测系统snort,他基于wincap的,过滤规则非常全,
datongguandian@sina.com
kellyli
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-27 21:08
我就在现有的DDK的packet里加过滤不可以么??我想的是通过deveiceIOcontrol来向kernel level传递过滤条件,在kernel level 通过packetIOControl通过IRP处理这些条件,然后在packetReceive里只拷贝自己需要的包,这样做可以么??
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-05-27 18:41
1. 参考passthru,在imd中filter
2. 看pcausa的tdi filter吧, 在这一层做便于依据一些连接关系来filter
1+2应该适合你的需求,
不过我很怀疑你能按进度完成.
111
kellyli
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-05-27 09:30
我的过滤条件比较多而且复杂,而且有些是动态的过滤条件。比较适合用什么办法呢??真是不好意思!
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-05-25 20:38
是的~得用IRP!或者如果不多的话就用注册表吧~~
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
kellyli
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-05-25 20:35
想知道怎么把应用层的过滤规则传给kernel呢?用DeviceIOControl么??还是怎么做?调试的时候是编译好.sys后,在调用应用程序看结果么??不懂的太多。不好意思!
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-05-24 19:33
接着说!首先回答关于PAKCET的问题,PCAP也是在PACKET的基础上面修改出来的~与其在别人的代码上面浪费时间不如自己找个简单的入手!PACKET是一个很纯净的数据包捕获的好例子,没又任何的垃圾代码,所以我建议你用PACKET的效率要高!再就是关于实现你说的这个玩意的建议,过滤是你说的,如果要在协议里面做象防火墙是在做梦,但是只是过滤掉你不想要的东西的话的确是一个很好的选择,修改RECIVE部分就可以了~~当不是你想要的包的时候就不要复制到IRP里面!也不要完成这个IRP,一直等到是你想要的包为止,你才这么做!那那些你不要的包怎么办呢??直接FREE掉就可以了!在这里你不需要把包再交给谁,所以也不用担心别人拿不到包或是什么OOB之类的东西,一个原则就是你想要什么就取什么,不想要的就找个最近的垃圾桶丢了它!环保还是要的,要不你会被垃圾包围而失去空间!怎么调试?你大可不用SOFTICE,除非你想学它!只要用DBGPRINT来输出调试信息就可以了,这个是初学者最好的调试方法,当然这个也要环保,就是要使用#IF和#END IF,这个怎么用去问过去教你的老师!其他的碰到问题再说吧~~
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-05-24 18:47
Packet???是DDK下的那个驱动么??你的意思是可以在协议驱动里过滤包??那么我去改Pcap下的那个驱动也可以么??我没什么经验?我看完了pcap下的那个驱动的源码,结构也了解了一点。我感觉如果要加过滤,先去掉里面的BPF filter。然后在PacketRead和Packet_tap里加上过滤是不是就可以。还有,如果我改好了,怎么调试呢?一定要用softice么?我一用就死机!而且一开始 *.sys就装不上!55555

呵呵PCAP的代码我一直都放在硬盘里面不看,PACKET过去还是看过的!安装的问题嘛我说过很多了,SIRROOM昨天找到了个更方便的方法就是直接用2K带的SETUP。EXE,你进到CMD里面后直接“SETUP/?”就知道怎么用了!不过我没试过!你可以到核心驱动开发里面看我回复过的一个帖子里面详细的说了写安装要注意什么和可以参考什么!啊~~电视开始了~~我要说的还没说完~~一会接着说!
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
17楼#
发布于:2002-05-24 17:45
是老板的要求,我痛苦死了,我都作好一个分析的app了,现在让我改驱动,我是一窍不通。要被开除了!5555555,谁能救救我!


什么老板这么狠,抡起骷髅头砸了过去,什么东西还不得慢慢来啊?博士也是一天一天念出来的吗。
kellyli
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2002-07-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-05-24 17:35
Packet???是DDK下的那个驱动么??你的意思是可以在协议驱动里过滤包??那么我去改Pcap下的那个驱动也可以么??我没什么经验?我看完了pcap下的那个驱动的源码,结构也了解了一点。我感觉如果要加过滤,先去掉里面的BPF filter。然后在PacketRead和Packet_tap里加上过滤是不是就可以。还有,如果我改好了,怎么调试呢?一定要用softice么?我一用就死机!而且一开始 *.sys就装不上!55555
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-05-24 17:24
有.X.T.I.M.大侠出手,我就可以接着去调程序了。

按第一贴的“给分”键,给分。
上一页
游客

返回顶部