wlcscu
驱动牛犊
驱动牛犊
  • 注册日期2009-12-10
  • 最后登录2010-05-18
  • 粉丝2
  • 关注0
  • 积分13分
  • 威望111点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:7890回复:24

用Minifilter架构 写了一个文件加密驱动

楼主#
更多 发布于:2010-03-08 14:53
这段时间研究文件过滤驱动,经过几个月来的努力,终于写成了一个驱动,非常感谢本网站上的大虾,帮我解决了很多问题。今天写这个帖子,也想跟大家分享一下。
我主要参考了这些网页:
http://bbs.driverdevelop.com/htm_data/39/0904/116386.html
http://bbs.driverdevelop.com/read.php?tid-113072-keyword-word.html
http://bbs.driverdevelop.com/read.php?tid=112076

这个驱动实现的功能是:对满足过滤条件的文件,如果发生了写操作调用(如文件拷贝)并没有加密过,则对其进行加密,对已加密过的文件,如果发生了读操作(如打开),则对其进行解密,使用户看到的文件正确无误,这样就可以达到防拷贝的目的。加密算法AES。

采用过滤文件后缀名的方式,过滤后缀名为.c;.h;.cpp;.txt;.doc;.ppt;0000;.xls;.pst;.jpg;.pdf;.rtf;.tmp;.docm;.docx;.pptx;.xlsx;.jpeg;.accdb。0000是用于过滤EXCEL文件时使用的,因为EXCEL文件产生的临时文件没有后缀名,而是一串十六进制数据,对满足过滤条件的文件自动加密,但不会对系统文件及Windows文件夹里的文件进行加解密。

写完后有以下感想:
1.    加密信息是写入文件尾,但的确这并不是一个好方法,虽然实现起来逻辑要简单一些,不过这并不意味着这是件简单的事,因为Office文件的长度变来变去,我只在Office 2007这个版本上作了测试,其他版本是不是也有与之相同的表现就不知道了;而且如果要加密其他类型的文件,而这些类型的文件如果也像Office文件的话,那么又得修改源代码了,虽然上述功能实现了,不过我还是觉得把加密信息写到文件头是要好一些。
2.    我是采用的过滤文件后缀名的方式,而这种方式的确有些问题,对Office这类文件就行不通,因为它们都会利用一些tmp文件来保存临时信息,写完数据后再把临时文件改名成原文件名,所以如果过滤后缀名,只过滤到原文件,则不会产生效果。而且Word PPT的临时文件是.tmp,而EXCEL的临时文件则没有后缀名(是一串通十六进制数据),所以我想通过过滤文件后缀名的方式也有很大局限性,应该与进程信息结合起来。
3.    TXT这类文件最简单,如果要写文件过滤驱动的话,应先测试它,待它测试成功后,再对其他类型文件进行测试。

我目前只测试了TXT,DOC, EXCEL和PPT类型的文件,由于所涉及到的文件类型太多,所以我想把可执行程序放上来给大家用用,看看还有哪些问题。如果您使用后发现了某个问题,请您告诉我,谢谢。也可发到我邮箱里: wlcscu@163.com

附上驱动及安装文件。
另外测试时应注意:
注意事项:
1.    文件长度大小不同,可能会有不同的结果,目前我只测试过29 Bytes左右文件和4k-2Bytes左右文件,由于1M-3Bytes左右的数据没办法从外面主机直接拷贝到虚拟机上,所以没有测试,在理论上讲它应该与4k-2Bytes数据文件的表现相似;
2.    不同的操作顺序对测试结果也有影响,如新建一个文件,在文件里写入数据后再关闭与新建文件,再打开另一文件,关闭此文件,然后再在新建文件里写入数据,这两种操作也会有所不同(因为第一种操作鼠标焦点在新建文件上,而第二种操作鼠标焦点会在打开的文件上)
3.    由于Windows操作系统的预读机制,即当鼠标聚焦在文件时,会预读该文件,而鼠标究竟聚焦在哪个文件上,难于控制,所以对文件的操作最好是要么驱动加载后服务进行的环境下,要么是在驱动服务停止的环境下(即是说文件操作时,最好不要net stop filterdemo/net start filterdemo,而最好是在开机时才运行这两个命令之一,并在关机前不再运行这两个命令)


附件名称/大小 下载次数 最后更新
FileFilterDemoDriver.rar (13KB)  344 2010-03-08 14:53

最新喜欢:

daniel_baodaniel...
Gilgamesh
驱动牛犊
驱动牛犊
  • 注册日期2009-04-29
  • 最后登录2010-03-15
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-03-08 17:55
先顶个,看看
新手上路,多多关照
wonjhoncy
驱动牛犊
驱动牛犊
  • 注册日期2006-06-07
  • 最后登录2011-05-18
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望182点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-03-08 18:53
怎么只有驱动的?
microbe
驱动小牛
驱动小牛
  • 注册日期2007-12-10
  • 最后登录2011-01-17
  • 粉丝1
  • 关注0
  • 积分914分
  • 威望420点
  • 贡献值1点
  • 好评度88点
  • 原创分0分
  • 专家分1分
地板#
发布于:2010-03-08 19:27
估计没人会帮你免费测试吧,,下了去各种IDA,各种OOXX~~~~
daniel_bao
驱动牛犊
驱动牛犊
  • 注册日期2007-04-14
  • 最后登录2010-03-11
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2010-03-09 16:10
看看,学习学习,咯咯!
wangyangkkx
驱动牛犊
驱动牛犊
  • 注册日期2009-12-30
  • 最后登录2011-07-08
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望431点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2010-03-10 16:15
楼主能给份源码吗 实在感谢啊 wangyangwla@sina.com
liuhui19842003
驱动牛犊
驱动牛犊
  • 注册日期2009-12-30
  • 最后登录2010-11-23
  • 粉丝1
  • 关注1
  • 积分52分
  • 威望481点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2010-03-29 10:57
楼主能给份源码吗?dongn0905@126.com
wlcscu
驱动牛犊
驱动牛犊
  • 注册日期2009-12-10
  • 最后登录2010-05-18
  • 粉丝2
  • 关注0
  • 积分13分
  • 威望111点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2010-03-29 14:53
, 怎么都没人帮我测测看呀!
hellward
驱动牛犊
驱动牛犊
  • 注册日期2009-04-16
  • 最后登录2010-06-10
  • 粉丝2
  • 关注0
  • 积分12分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2010-04-14 22:11
楼主能给分源码学习一下吗?usacoward@gmail.com
alexandkcc
驱动牛犊
驱动牛犊
  • 注册日期2009-12-30
  • 最后登录2010-10-07
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2010-04-15 15:30
楼主能给分源码学习学习吗?alexandkcc@yahoo.com.hk
pkubosun
驱动牛犊
驱动牛犊
  • 注册日期2010-01-28
  • 最后登录2010-04-15
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2010-04-15 17:18
晕~~~
就一个驱动程序,任何说明都没有。怎么测啊?
如果能给份源码,请发到xbx@tom.com
huoychen
驱动牛犊
驱动牛犊
  • 注册日期2010-01-07
  • 最后登录2010-05-31
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2010-04-15 21:05
顶楼主
liuhui19842003
驱动牛犊
驱动牛犊
  • 注册日期2009-12-30
  • 最后登录2010-11-23
  • 粉丝1
  • 关注1
  • 积分52分
  • 威望481点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2010-04-19 13:17
回 楼主(wlcscu) 的帖子
怎么测试?安装了就可以测试了吗?
liuwei200000
驱动牛犊
驱动牛犊
  • 注册日期2004-08-21
  • 最后登录2010-06-26
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望70点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2010-04-19 16:08
先mark,有空研究下,谢谢楼主了!
水手
114253
驱动牛犊
驱动牛犊
  • 注册日期2010-01-01
  • 最后登录2011-05-29
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望181点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分20分
14楼#
发布于:2010-05-03 10:47
楼主 能否给份源码啊   liumd1027@163.com
yinwei7788
驱动牛犊
驱动牛犊
  • 注册日期2010-03-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2010-05-11 15:21
楼主能给分源码学习学习吗?yinwei7788@yahoo.com.cn
lx3721
驱动牛犊
驱动牛犊
  • 注册日期2010-08-27
  • 最后登录2010-10-13
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2010-08-27 10:07
几条经验总结不错!
江南
353807973
驱动牛犊
驱动牛犊
  • 注册日期2010-08-26
  • 最后登录2012-05-01
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望181点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2010-09-08 11:16
楼主能给分源码学习学习吗?353807973@qq.com
lichengyong
驱动牛犊
驱动牛犊
  • 注册日期2010-08-26
  • 最后登录2011-05-10
  • 粉丝0
  • 关注0
  • 积分39分
  • 威望391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2010-09-27 17:34
楼主能给源码吗?licyong@yeah.net
这倒霉孩子
mumucom
驱动牛犊
驱动牛犊
  • 注册日期2004-07-02
  • 最后登录2011-10-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2010-10-23 17:16
ding,yige kankan  la.......
上一页
游客

返回顶部