NTFS系统下的文件删除后的恢复原理(200)

  • 主题发起人 主题发起人 fang_csc
  • 开始时间 开始时间
F

fang_csc

Unregistered / Unconfirmed
GUEST, unregistred user!
现在急用NTFS系统下的文件删除后的恢复,因不知道怎么做请高手指点
 
这个需要对NTFS格式熟悉,FDT TAT以前FAT格式删除是第一个字母修改为E5标志,恢复FAT中的第一个字母就可以了
 
你是要自己写? 这个要研究一下NTFS的文件格式了。或者直接用现成的工具,更简单。
 
是要自已写,现在正在分析NTFS的文件格式,有很多不懂的地方请指教一下。
 
估计1年半载后,必有小成。
 
请问一下白河愁前辈,我在看NTFS格式中发现他的数据流的读取算法上有一点不明白不知你知道不请指教一下。主要是在数据流中用到了16进制的算数减法不知怎么写算法。e.g 在一个文件的数据流是Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F0C0001680 A0 00 00 00 58 00 00 00 01 04 40 00 00 00 2A 00 ?..X.....@...*.0C0001690 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 ................0C00016A0 48 00 00 00 00 00 00 00 00 30 00 00 00 00 00 00 H........0......0C00016B0 00 30 00 00 00 00 00 00 00 30 00 00 00 00 00 00 .0.......0......0C00016C0 24 00 49 00 33 00 30 00 31 01 71 11 27 31 01 9B $.I.3.0.1.q.'1.?0C00016D0 E2 E0 31 01 A7 E9 12 00 忄1.ч..其中 31 01 71 11 27 31 01 9B E2 E0 31 01 A7 E9 12 00是他的数据流的存放地址在资料上说的算法是第一个地址的族数是$271171第二个地址是$271171+$FFFFE0E29B=$1000007F40C 就是第二个地址的族数是7F40C我现在就是不懂在算法前面应去掉几位16进制.
 
建议详细去这里看看:http://www.linux-ntfs.org/doku.php
 
我网上看见一段相关代码但其中有一几句不明白请高人指点一下varlpTemp: PByteArray;n64Offset: LONGLONG;begin n64Offset := 0;是把文件流的偏移量指定给变量n64Offset Move(FMFTRecord[dwCurPos], n64Offset, chOffsetSz);把指针指向下一个数据流位置 Inc(dwCurPos, chOffsetSz); lpTemp := PByteArray(@n64Offset); if ((lpTemp[chOffsetSz - 1] and $80) = $80) then//主这里是看文件流的偏移量的第一位是否是1 begin 这里不知是什么意思 for dwIndex := Pred(SizeOf(LONGLONG)) downto chOffsetSz do lpTemp[dwIndex] := $FF; end;
 
后退
顶部