lydzyw
驱动牛犊
驱动牛犊
  • 注册日期2004-06-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分257分
  • 威望40点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
阅读:1980回复:8

判断文件是否曾加密的方法,请各位大侠看一下是否可行

楼主#
更多 发布于:2005-06-09 21:54
  根据资料,fileobject的FsContext字段一般指向FSRTL_COMMON_FCB_HEADER结构,该结构中有一个Flags和一个Flags2分量,其中Flags2现在只定义了3种标志,所以我是这样想:
  我自己先定义一个标志#define FLAG_ENCRYPTED (0x80),在进行加密之后就将该标志OR到Flags2里面,表示该文件已经被加密.然后在read的时候先判断Flags2中是否有这个标志,如果有就解密.

  我这个方法不用改变文件的大小,也不用在磁盘上保留一个目录保存曾加密文件的信息.我自己已经在win2000和xp下对txt文件实验成功.
  我是菜鸟,不知道这个方法是否确实可行,请各位关注这个问题的大侠帮忙评论/测试一下.(我想着这么简单的方法这么多高手怎么没有想到呢,所以我很心虚~~~:) )
xhjjxm
驱动小牛
驱动小牛
  • 注册日期2005-08-03
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分1011分
  • 威望208点
  • 贡献值0点
  • 好评度87点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-11 11:57
学习。

有一个想法:在文件的时间上做记,让年份加上一千年,怎么样?
lydzyw
驱动牛犊
驱动牛犊
  • 注册日期2004-06-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分257分
  • 威望40点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-11 09:07
呵呵,从两位大侠的回贴中受益非浅.非常感谢!
这个问题只有先放一边了,继续学习...:)
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
地板#
发布于:2005-06-11 02:46
You have to understand what file attributes a file system can keep and how file attributes are stored in a file system. For example though in NTFS standard information attribute could be 4 bytes long, in FAT it\'s only 1 byte. So some NTFS file standard information attributes cannot be populated to FAT, let alone other specific NTFS meta data.

It\'s much easier if you only want your fsd support a particular file system. But people here are trying to find a generic solution that works on all file systems.

znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地下室#
发布于:2005-06-10 23:56
这也许可以用,但象以前的网友说的一样,可能不稳定,你不清楚啥时ms就会用这些位置了.

而且这和文件系统关联太强,必须保证每个文件系统都有相似的区域才行.
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
lydzyw
驱动牛犊
驱动牛犊
  • 注册日期2004-06-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分257分
  • 威望40点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-06-10 20:39
    感谢znsoft与michaelgz的指点,我重新做了一下测试,一旦重启后设置的标志就消失了,所以的确此路不通.
    不过我按照类似的思路,看了一下资料,觉得以下信息似乎可以利用.

2600ifs的ntifs.h中有以下定义:
typedef struct _FILE_BASIC_INFORMATION {
......
ULONG FileAttributes;
} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;

该结构中FileAttributes的取值有这些:
#define FILE_ATTRIBUTE_READONLY     0x00000001
#define FILE_ATTRIBUTE_HIDDEN       0x00000002
......
#define FILE_ATTRIBUTE_ENCRYPTED    0x00004000  
#define FILE_ATTRIBUTE_VALID_FLAGS          0x00007fb7
#define FILE_ATTRIBUTE_VALID_SET_FLAGS      0x000031a7

这些取值并没有利用到高4位,所以可以自己定义一个标志如
#define FLAG_ENCRYPTED    0x80000000  

而最重要的是FILE_BASIC_INFORMATION中的内容应该会作为文件的metadata储存到磁盘上


不知道两位大侠对这个想法有什么指教?有没有试过?
请指点!谢谢!!
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-06-10 17:04
 
fileobject是动记的对象,和文件不存在永久关系,两次打开同一个文件,该对象上的数据不能保留。都是独立的。所以你的想法不成。

关键是要在文件本身作标记,这样才能解决不同的文件系统下能有一致的表现。

最简单的办法是作一个列表,记录下哪些文件是加密的。但这样的效率不高,而且记忆的文件数有限.如果能找到在文件本身作标记的办法就好了。


学习。
[b]万水千山总是情,回个帖子行不行?[/b]
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
7楼#
发布于:2005-06-10 13:41
fileobject是动记的对象,和文件不存在永久关系,两次打开同一个文件,该对象上的数据不能保留。都是独立的。所以你的想法不成。

关键是要在文件本身作标记,这样才能解决不同的文件系统下能有一致的表现。

最简单的办法是作一个列表,记录下哪些文件是加密的。但这样的效率不高,而且记忆的文件数有限.如果能找到在文件本身作标记的办法就好了。
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
8楼#
发布于:2005-06-09 23:19
Did you restart your machine after encryption? Did you try to copy encrypted file to another machine?

Then you\'ll know why your solution is not working after these tests.
游客

返回顶部