Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1358回复:5

关于notepad读写*.TXT的动态加密的问题!(文件过滤驱动)(80分)

楼主#
更多 发布于:2003-01-04 16:44
我在做一个文件的加密程序,通过过滤驱动来截取文件的读写数据,
读出来的时候进行解密,写的时候进行加密!

NOTEPAD读*.txt文件是使用mdl的。
截取到notepad读,写数据时,觉得特别乱,不知道在哪一步进行加解密!
notepad读 txt文件时,是kernel mode,
而写文件时,先是 一个usemode的写,然后是一个kernel mode的写


原来的思路是不过读用的是什么方式,找到数据缓冲区,进行解密
写的时候也不管用的是什么方式,找到数据缓冲区,进行加密

但这样的话,notepad读txt时,加解密就乱套了!

有哪位高手说说到底应该怎么做?

 :mad: :mad: :mad:

[编辑 -  1/4/03 by  Ice_Bin]

最新喜欢:

okincnokincn
好好学习 天天向上
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-01-05 06:06
这个问题不那么好回答。

notepad读 txt文件时,是kernel mode,

-----这个确实是用的mdl read 方式。


而写文件时,先是 一个usemode的写,然后是一个kernel mode的写

---都是工作在kernel mode.只不过一个用的是usermode buffer, 一个用的是kernel mode buffer.

那个使用user mode buffer的工作在 dispatch level 以下,后面仿生的那个使用kernel mode buffer 的事实上就是所谓的lazy write 了,那个是由cache系统系统来调用的。


------------------------

原来的思路是不过读用的是什么方式,找到数据缓冲区,进行解密
写的时候也不管用的是什么方式,找到数据缓冲区,进行加密

但这样的话,notepad读txt时,加解密就乱套了!   --当然

------------------------
这个好想不太对。和我以前犯过的一个错误相似。你再写的时候不能够遭到数据buffer然后加密。因为系统调用你的dispatch routine来写并传给你一个有效的buffer不意味着它以后不在用这个buffer 作为以后读的提出数据. 为了不影响后续的使用,你只能在文件系统向下层调用时(disk.sys或者它的filter driver)调用时,分配新的数据区,encrypt 你自己的数据buffer, 然后让下层进行真正的数据写。
当然等待完成,release buffer也是你得事情。

以前陆版主曾经提过一次pgp disk的实现,说道它自己实现了一个fat. 留心看了一下,确实不是一个简单的上层filter 可以解决的。


Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-05 14:12
首先谢谢你的回答!

上层的FILTER搞不定,那下层的filter如何做?
能不能给个思路?



以前陆版主曾经提过一次pgp disk的实现,说道它自己实现了一个fat. 留心看了一下,确实不是一个简单的上层filter 可以解决的。』

有没有他的文章?寄我一份!thanks!
swordbin@sina.com
好好学习 天天向上
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-01-05 19:20
按照ifs的说明,文件系统设备驱动程序只能由上层filter, 不能有下层filter.

这个大约是pgp自己实现文件系统的原因吧。如果你要做一个干净的encrypt driver, 你需要读pgp的source.而且大约需要相似的方式。

当然这不意味着用只用file system filter driver就实现不了这个东西。你没有忽略处理fastio吧。如果你没有忽略处理这个,应该可以的。你做的时候可能需要处理下面的东西:

1。读,不能确保永远是mdl read, 你需要处理fastio ,保证添入userbuffer里的是decrypt后的东西。

2。 写。判断irp的写模式,之后是paging io的时候才encrypt.

ifs里有完整的vfat source, 从读那里开始可能可能是个捷径。
Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-01-08 19:55
首先谢谢你对我的问题的关注:
老板现在又让做另外一个东东了,哎,现在没有时间去试这个了,能不能给你的邮件我啊,等我试的时候有什么问题好直接请教你!
 
先谢了,我的邮件是 swordbin@sina.com  :P
好好学习 天天向上
scsi
驱动中牛
驱动中牛
  • 注册日期2002-03-22
  • 最后登录2011-03-09
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望116点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-01-09 17:10
太复杂
游客

返回顶部