请教:那位老兄知道NTFS的$MFT中的File Record(inode)的结构? 有详细的NTFS的中文资料愿再加贴赠300分

xf_lii 2004-10-24 09:16:12
本人40G的数据丢失,文件系统为NTFS,在Windows2000下快速格式化。
经分析,以前的$MFT的前几个File Record被新的$MFT改写,以前的文件基本上都在。
请教:
1:如何手动修改$MFT,改变$MFT的大小和包含的File Record的数量以及把以前的大量File Record有机的连接起来?

2:File Record 的详细结构. NTFS是如何用File Record组织目录树的?

如果第一中方案行不通(就我的水平而言),我可以自己写个程序,从$MFT 中遍历所有File Record读出其$DATA数据保存到其它盘.(多属性的文件在我的盘中基本上没有)


若有详细的NTFS的中文资料愿再加贴赠300分

我五年的心血已付诸东流.
注:欢迎大家共同探讨NTFS,请不要提及数据恢复软件,谢谢.
...全文
489 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanoble 2005-04-05
  • 打赏
  • 举报
回复
不知道楼主真正的意图是什么,只想恢复数据用FinalData
ufool 2005-04-04
  • 打赏
  • 举报
回复
这里有关于NTFS的讨论,大家可以去看看。不过基本上还是基于那个文档层面上的。
roger_ding 2005-04-03
  • 打赏
  • 举报
回复
你的目的是恢复文件,所以$MFT倒不是必须恢复

可以用ufool的方法,即在整个硬盘内查找“FILE”的记录,由于FILE记录内有该文件大小,每个存储块的起始簇号,以及每个存储块的长度,那么就可以恢复该文件
xf_lii 2005-04-02
  • 打赏
  • 举报
回复
谢谢 ufool
可以再详细些吗
ufool 2005-03-11
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3685/3685342.xml?temp=.5937158
ufool 2005-03-11
  • 打赏
  • 举报
回复
ufool多说点

====================

你想知道什么问题?对这感兴趣的,好像不多。前段时间倒是写了一个正常情况下NTFS解析的东东。现在没空暂时又放下了。如哪位有兴趣,我提供一点思路:
1、程序必须可以正常读卷,可用CreateFile();
2、遍历整个大概范围内的File Record,不要只遍历被格式化后的$MFT所指的大小,一般来说,File Record都是连续分布的。
3、每个File Record是1024B,将其解析出来,感兴趣的内容为是否删除,是否为目录,文件名,父目录,Data Runs,其中Data Runs就是文件的内容。楼主所提供的文档里,都有详细的描述。
4、这样,将每个属于文件的File Record生成一个文件,就可以了,由于只是对一些文件感兴趣,也就没有必要再去组建树了,那样挺麻烦的。

有关讲述NTFS的书:

WINDOWS 2000 SERVER技术内幕 (北京8小时送货)
Inside WINDOWS 2000 SERVER

作者: [美]William Boswell 译者:杨洪涛 李博
市场价: ¥98.00
总站会员价:
¥73.50(4-5星会员) ¥76.44(1-3星会员) ¥78.40(普通会员)
出版社: 清华大学出版社 ISBN:7-302-04913-0
出版日期:2001-09-01 丛书: 北京科海培训中心图书

http://www.china-pub.com/computers/common/info.asp?id=4188


NTFS搞懂要比FAT,EXT2复杂多了,不过也是我见过最好,最有效率,最先进的文件系统。前段时间,看到有报道说reiserfs 4是最先进的,我没有研究过,不知哪位有这方面资料?
loveisbug 2005-01-17
  • 打赏
  • 举报
回复
ufool多说点
Mr-Chen 2004-12-31
  • 打赏
  • 举报
回复
关注!
pepsi1980 2004-12-30
  • 打赏
  • 举报
回复
FinalData
krfstudio 2004-12-29
  • 打赏
  • 举报
回复
可以用 DiskExplorer for NTFS 这个软件来恢复你的数据,可以直接操作硬盘扇区,同时可以解析磁盘分区表和 NTFS 文件系统,支持利用虚拟卷来恢复数据。
ufool 2004-12-29
  • 打赏
  • 举报
回复
另外

0x28 2 Next Attribute Id
0x2A 2 Align to 4 byte boundary

这只是在XP下有用,如在NT,或2000中,将会被
2 Update Sequence Number (a)
2S-2 Update Sequence Array (a)
所代替。

本来可以多写点,但日期过了这么久,估计没什么人能看到。
ufool 2004-12-29
  • 打赏
  • 举报
回复
找到一个FILE Record的结构,大家给分析分析:
Offset Size Description
0x00 4 Magic number 'FILE'
0x04 2 Offset to the update sequence
0x06 2 Size in words of Update Sequence Number & Array (S)
0x08 8 $LogFile Sequence Number (LSN)
0x10 2 Sequence number
0x12 2 Hard link count
0x14 2 Offset to Update Sequence Array
0x16 2 Flags
0x18 4 Real size of the FILE record
0x1C 4 Allocated size of the FILE record
0x20 8 File reference to the base FILE record
0x28 2 Next Attribute Id
0x2A 2 Align to 4 byte boundary
0x2C 4 Number of this MFT Record
2 Update Sequence Number (a)
2S-2 Update Sequence Array (a)
谁知道最后俩行是什么意思?

以下是个Index Header,组成NTFS的目录结构,据说是个B+树
Offset Size Description
0x00 8 MFT Reference of the file
0x08 2 Size of this index entry
0x0A 2 Offset to the filename
0x0C 2 Index Flags
0x0E 2 Padding (align to 8 bytes)
0x10 8 MFT File Reference of the parent
0x18 8 File creation time
0x20 8 Last modification time
0x28 8 Last modification time for FILE record
0x30 8 Last access time
0x38 8 Allocated size of file
0x40 8 Real size of file
0x48 8 File Flags
0x50 1 Length of filename (F)
0x51 1 Filename namespace
0x52 2F Filename
2F+0x52 P Padding (align to 8 bytes)
P+2F+0x52 8 VCN of index buffer with sub-nodes

====================================================================

最后两行的意思是:

Update Sequence Number:
更新序列号,大小为2B,是为了保证该扇区是否正确,以扇区的最后两个字节与该值比较,如果一样,则说明该扇区是正确的,否则就是有问题。
Update Sequence Array:
更新序列数组,大小一般为2*2B=4B,如果该扇区正确,在解析的时候,则将该数组中的两个2B大小的数字依次复制到该File Record所在的两个扇区的最后两个字节。



zzxenjoy 2004-11-08
  • 打赏
  • 举报
回复
ding
Magnus 2004-11-05
  • 打赏
  • 举报
回复
帮顶
xf_lii 2004-11-05
  • 打赏
  • 举报
回复
没有人能帮我吗?
xf_lii 2004-10-28
  • 打赏
  • 举报
回复
linux-ntfs提供的资料,有兴趣的同志可以研究研究。 不过是英文。
http://unc.dl.sourceforge.net/sourceforge/linux-ntfs/ntfsdoc-0.5.zip
stonewind 2004-10-27
  • 打赏
  • 举报
回复
你专门研究几个月,也许有眉目,一般的人可能都不知道
danyueer 2004-10-25
  • 打赏
  • 举报
回复
PS,我们还是微软的认证合作伙伴,Intel的战略合作伙伴。
danyueer 2004-10-25
  • 打赏
  • 举报
回复
楼主,不是我打击你,我一个同事研究NTFS两年,就是遇上与你相似的问题无法进展。后来我们跟微软和Intel联系了,他们的答复是:商业机密,NTFS的详细格式不允许对外发布。

所以……说实话遗憾的不止我同事和你两个人。
xf_lii 2004-10-25
  • 打赏
  • 举报
回复
找到一个FILE Record的结构,大家给分析分析:
Offset Size Description
0x00 4 Magic number 'FILE'
0x04 2 Offset to the update sequence
0x06 2 Size in words of Update Sequence Number & Array (S)
0x08 8 $LogFile Sequence Number (LSN)
0x10 2 Sequence number
0x12 2 Hard link count
0x14 2 Offset to Update Sequence Array
0x16 2 Flags
0x18 4 Real size of the FILE record
0x1C 4 Allocated size of the FILE record
0x20 8 File reference to the base FILE record
0x28 2 Next Attribute Id
0x2A 2 Align to 4 byte boundary
0x2C 4 Number of this MFT Record
2 Update Sequence Number (a)
2S-2 Update Sequence Array (a)
谁知道最后俩行是什么意思?

以下是个Index Header,组成NTFS的目录结构,据说是个B+树
Offset Size Description
0x00 8 MFT Reference of the file
0x08 2 Size of this index entry
0x0A 2 Offset to the filename
0x0C 2 Index Flags
0x0E 2 Padding (align to 8 bytes)
0x10 8 MFT File Reference of the parent
0x18 8 File creation time
0x20 8 Last modification time
0x28 8 Last modification time for FILE record
0x30 8 Last access time
0x38 8 Allocated size of file
0x40 8 Real size of file
0x48 8 File Flags
0x50 1 Length of filename (F)
0x51 1 Filename namespace
0x52 2F Filename
2F+0x52 P Padding (align to 8 bytes)
P+2F+0x52 8 VCN of index buffer with sub-nodes



加载更多回复(3)
关键字:Windows NT NTFS 文件系统 NTFS作为Microsoft Windows NT®操作系统的标配文件系统克服了FAT/FAT32文件系统的大量缺点;同时又随着Microsoft Windows 2000®、Microsoft Windows XP操作系统的推广得到越来越广泛的应用。 和FAT/FAT32文件系统相比,NTFS文件系统主要有以下优点。 •支持大容量存储单元(最大支持 GB) •内建数据压缩支持 •支持事务日志文件 •加强数据安全 目录 基本数据类型 3 MFT文件记录 3 更新序列号 4 虚拟簇号 4 逻辑簇号 4 数据流描述 4 系统文件 6 $MFT 7 未命名数据流格式 7 $MFTMirr 7 未命名数据流格式 8 $LogFile 8 Log file restart page header 8 Log file restart area record:(40 字节) 9 Log client record 9 $Volume 9 未命名数据流格式 9 $AttrDef 10 未命名数据流格式 10 整理规则 10 $AttrDef Flags 10 . (Root Directory) 10 $MountMgrDatabase 数据流 11 $Bitmap 11 $Boot 11 引导扇区与BPB 11 $BadClus 13 $Secure 13 $SDS 数据流 13 $SDH Index 13 $SII Index 14 $UpCase 14 未命名数据流格式 14 $Extend 15 $ObjId 15 $ObjId:$O 15 $Quota 15 $Quota:$O 16 $Quota:$Q 16 $Quota flags 17 $Reparse 17 $Reparse:$R 17 $UsnJrnl 18 $UsnJrnl:$J 18 $UsnJrnl reason flags 18 $UsnJrnl source info flags 19 $UsnJrnl:$Max 20 文件属性记录 20 属性记录头 21 STANDARD_INFORMATION (0x10 常驻属性 len=0x30,0x48) 22 ATTRIBUTE_LIST (0x20 len > 26) 23 FILE_NAME (0x30 常驻属性 len = 68~578)) 24 VOLUME_VERSION (0x40 NT) 25 OBJECT_ID (0x40 2K) 25 SECRUITY_DESCRIPTOR (0x50 ) 26 VOLUME_NAME (0x60) 26 VOLUME_INFORMATION (0x70 len = 0x0c ) 26 DATA (0x80) 27 INDEX_ROOT (0x90) 27 索引块头(16 bytes) 28 索引项(目录项) 28 INDEX_ALLOCATION (0xA0大目录使用) 28 IA索引块(INDEX_ALLOCATION指向的外部索引区) 29 BITMAP (0xB0 MFT文件或外部索引块使用) 29 SYMBOL_LINK (0xC0 NT) 29 REPARSE_POINT (0xC0 2K) 29 EA_INFORMATION (0xD0 ) 30 EA (0xE0 ) 30 PROPERTY_SET (0xF0 NT) 31 LOGGED_UNTILITY_STREAM (0x100 2K) 31 NTFS卷初始化 31 区结尾与备份主引导扇区 31 目录结构 31

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧