「NTFS:让你的硬盘更安全、更高效!」NTFS文件系统详解,

这篇具有很好参考价值的文章主要介绍了「NTFS:让你的硬盘更安全、更高效!」NTFS文件系统详解,。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

NTFS(New Technology File System)是一种现代的文件系统,是Windows操作系统中最常用的文件系统之一。它是一种高效、可靠、安全的文件系统,支持大容量存储、文件加密、压缩、权限控制等功能。本文将详细介绍NTFS文件系统的结构、$Boot文件、$MFT元文件、文件记录、属性的属性头和属性体分析、MFT偏移地址计算以及遍历分区文件列表的思路。

ntfs文件系统详解,windows,linux,unix

 

一、NTFS文件系统的结构

ntfs文件系统详解,windows,linux,unix

 

NTFS文件系统由三个主要部分组成:引导扇区、文件记录和元文件。引导扇区包含启动代码和分区表,文件记录存储文件的数据和元数据,元文件存储文件系统的元数据。

引导扇区:NTFS文件系统的引导扇区包含了启动代码和分区表。启动代码是用来启动操作系统的程序代码,分区表则记录了分区的信息,包括分区的起始位置、大小、分区类型等。

文件记录:NTFS文件系统中的文件记录是用来存储文件的数据和元数据的。每个文件记录都包含了文件的属性信息、文件名、文件数据等。文件记录的大小是固定的,通常为1KB或4KB。

元文件:NTFS文件系统中的元文件是用来存储文件系统的元数据的。元数据包括文件系统的信息、文件记录的信息、磁盘空间的分配情况等。元文件通常包括$MFT(文件记录表)、$Bitmap(位图)、$LogFile(日志文件)等。

二、$Boot文件

$Boot文件是NTFS文件系统中的一个特殊文件,它包含了文件系统的一些基本信息,如文件系统版本、簇大小、分区大小等。$Boot文件的大小为512字节,它的结构如下:

![NTFS_Boot_File_Structure](https://i.imgur.com/5YJjZJy.png)

其中,Jump指令是用来跳转到启动代码的,OEM ID是用来标识文件系统的,Bytes Per Sector表示每个扇区的字节数,Sectors Per Cluster表示每个簇包含的扇区数,Reserved Sectors表示保留扇区的数量,Media Descriptor表示磁盘介质类型,Sectors Per Track表示每个磁道的扇区数,Number of Heads表示磁头的数量,Hidden Sectors表示隐藏扇区的数量,Total Sectors表示分区的总扇区数,MFT Start Cluster表示$MFT元文件的起始簇号,MFT Mirror Start Cluster表示$MFT镜像文件的起始簇号,Clusters Per MFT Record表示每个$MFT记录占用的簇数,Clusters Per Index Block表示每个索引块占用的簇数,Volume Serial Number表示卷序列号,Checksum是用来校验$Boot文件的。

三、$MFT元文件

ntfs文件系统详解,windows,linux,unix

 

$MFT元文件是NTFS文件系统中的一个特殊文件,它存储了文件系统中所有文件记录的信息。$MFT元文件的大小通常为1024个簇,每个簇的大小为$Boot文件中定义的簇大小。$MFT元文件的结构如下:

![NTFS_MFT_File_Structure](https://i.imgur.com/2zL7tq7.png)

其中,文件头包含了文件的一些基本信息,如文件名、文件属性等。文件记录则包含了文件的属性信息、文件名、文件数据等。每个文件记录的大小是固定的,通常为1KB或4KB。每个文件记录都有一个唯一的标识符,称为文件记录号(File Record Number,简称FRN)。$MFT元文件中的第一个文件记录是$MFT本身,它的文件记录号为0。

四、文件记录

NTFS文件系统中的文件记录是用来存储文件的数据和元数据的。每个文件记录都包含了文件的属性信息、文件名、文件数据等。文件记录的大小是固定的,通常为1KB或4KB。文件记录的结构如下:

![NTFS_File_Record_Structure](https://i.imgur.com/5ZKqL6j.png)

其中,文件头包含了文件的一些基本信息,如文件名、文件属性等。文件记录则包含了文件的属性信息、文件名、文件数据等。每个文件记录都有一个唯一的标识符,称为文件记录号(File Record Number,简称FRN)

五、MFT偏移地址计算

ntfs文件系统详解,windows,linux,unix

 

在NTFS文件系统中,每个文件记录都有一个唯一的标识符,称为文件记录号(File Record Number,简称FRN)。要访问某个文件记录,需要先找到该文件记录在$MFT元文件中的偏移地址。计算偏移地址的公式如下:

$MFTOffset = MFTStartCluster * ClusterSize + FRN * RecordSize

其中,MFTStartCluster是$MFT元文件的起始簇号,ClusterSize是簇的大小,FRN是文件记录号,RecordSize是文件记录的大小。

六、属性的属性头分析

NTFS文件系统中的文件记录包含了多个属性,每个属性都有一个属性头和一个属性体。属性头包含了属性的一些基本信息,如属性类型、属性长度、属性标志等。属性头的结构如下:

![NTFS_Attribute_Header_Structure](https://i.imgur.com/2Uq6J1Q.png)

其中,Type表示属性的类型,Length表示属性的长度,Non-Resident表示属性是否为非驻留属性,NameLength表示属性名的长度,NameOffset表示属性名的偏移量,Flags表示属性的标志,AttributeID表示属性的标识符。

七、属性的属性体分析

NTFS文件系统中的文件记录包含了多个属性,每个属性都有一个属性头和一个属性体。属性体包含了属性的具体内容,如文件数据、文件名、文件属性等。属性体的结构因属性类型而异,下面以常见的属性类型为例进行介绍。

1. $STANDARD_INFORMATION属性

$STANDARD_INFORMATION属性包含了文件的一些基本信息,如创建时间、修改时间、访问时间、文件属性等。$STANDARD_INFORMATION属性的结构如下:

![NTFS_STANDARD_INFORMATION_Attribute_Structure](https://i.imgur.com/6wQK9gE.png)

其中,CreationTime表示文件的创建时间,LastAccessTime表示文件的最后访问时间,LastWriteTime表示文件的最后修改时间,FileAttributes表示文件的属性,如只读、隐藏、系统等。

2. $FILE_NAME属性

$FILE_NAME属性包含了文件的名称、大小、创建时间、修改时间、访问时间等信息。$FILE_NAME属性的结构如下:

![NTFS_FILE_NAME_Attribute_Structure](https://i.imgur.com/7hjyJ3Y.png)

其中,ParentDirectory表示文件所在的父目录的FRN,CreationTime表示文件的创建时间,LastAccessTime表示文件的最后访问时间,LastWriteTime表示文件的最后修改时间,FileSize表示文件的大小,Flags表示文件的标志,如只读、隐藏、系统等,FileNameLength表示文件名的长度,FileName表示文件名。

3. $DATA属性

$DATA属性包含了文件的数据。$DATA属性的结构如下:

![NTFS_DATA_Attribute_Structure](https://i.imgur.com/5mXyL9G.png)

其中,Non-Resident表示数据是否为非驻留属性,DataRuns表示数据的运行列表,Data表示数据的内容。

4. $INDEX_ROOT属性

$INDEX_ROOT属性包含了目录的索引信息。$INDEX_ROOT属性的结构如下:

![NTFS_INDEX_ROOT_Attribute_Structure](https://i.imgur.com/6WjJ9Km.png)

其中,Type表示索引的类型,CollationRule表示排序规则,BytesPerIndexRecord表示每个索引记录的大小,ClustersPerIndexRecord表示每个索引记录占用的簇数,IndexEntriesOffset表示索引记录的偏移量,IndexEntriesLength表示索引记录的长度,IndexEntries表示索引记录的内容。

八、遍历分区文件列表的思路

要遍历NTFS文件系统中的所有文件,需要先找到$MFT元文件的起始簇号和大小,然后读取$MFT元文件的内容,解析每个文件记录,获取文件的属性信息、文件名、文件数据等。具体的遍历思路如下:

1. 读取$Boot文件,获取簇大小和$MFT元文件的起始簇号。

2. 计算$MFT元文件的大小,读取$MFT元文件的内容。

3. 解析$MFT元文件中的每个文件记录,获取文件的属性信息、文件名、文件数据等。

4. 如果文件是目录,则遍历目录下的所有文件。

5. 如果文件是非驻留属性,则读取DataRuns列表,获取数据的位置和大小,读取数据。

6. 如果文件是索引属性,则读取IndexEntries列表,获取索引记录的位置和大小,解析索引记录,获取文件的属性信息、文件名、文件数据等。

7. 重复步骤3-6,直到遍历完整个分区。

总结

本文详细介绍了NTFS文件系统的结构、$Boot文件、$MFT元文件、文件记录、属性的属性头和属性体分析文章来源地址https://www.toymoban.com/news/detail-718807.html

到了这里,关于「NTFS:让你的硬盘更安全、更高效!」NTFS文件系统详解,的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何让你的结构体更高效

    文中所涉及到的代码运行结果均是在64位机器上执行得到的. 在Go中,我们可以使用 unsafe.Sizeof(x) 来查看变量所占的内存大小。以下是Go内置的数据类型占用的内存大小: 类型 内存大小(字节数) bool 1 int8/uint8 1 int/uint 8 int32/uint32 4 int64/uint64 8 float32 4 float64 8 complex64 8 complex128

    2024年02月08日
    浏览(39)
  • 如何让你的 WebSocket 接口测试更高效?拯救你的接口测试工作

    目录 引言 WebSocket介绍 HTTP与WebSocket的区别 WebSocket测试方法 使用在线工具 使用Postman 使用Jmeter 使用Python 结语 你是否曾经为 WebSocket 接口测试中复杂的协议和难以捕获的数据而感到束手无策?WebSocket 协议与传统的 HTTP 协议不同,测试方法也需要针对其特殊性进行优化。 本文将

    2024年02月07日
    浏览(40)
  • “让你的代码修改更高效:PyCharm全局修改教程“

    “让你的代码修改更高效:PyCharm全局修改教程” PyCharm是一款功能强大的Python IDE,它可以帮助Python开发者提高代码的质量和效率。PyCharm中的全局修改是一个非常有用的功能,它可以帮助你快速地对你的代码进行大规模的修改。在这篇文章中,我们将介绍如何使用PyCharm的全局

    2024年02月07日
    浏览(92)
  • 快速搭建API随心搭,让你的web开发更加高效

    随着互联网的发展,越来越多的应用和服务需要通过API接口来实现。API(Application Programming Interface,应用程序编程接口)可以理解为两个软件之间的桥梁,通过API接口,两个软件可以相互交流并进行数据交换。如今,API已经成为许多公司和应用程序的核心,因此快速搭建并管

    2024年02月08日
    浏览(50)
  • 【MySQL多表查询】:让你的数据检索更高效

    前言 ✨ 欢迎来到小K的MySQL专栏,本节将为大家带来 MySQL 中多表查询相关知识的讲解 一、多表关系 ✨项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基

    2024年02月09日
    浏览(38)
  • 【⑤MySQL函数】:让你的数据库操作更高效(二)

    前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL日期时间、条件判断、系统信息、加密、进制转换和IP地址转换函数的讲解 ✨ 一、日期和时间函数 函数 作用 CURDATE(),CURRENT_DATE() 返回当前日期 CURTIME(),CURRENT_TIME() 返回当前时间 NOW(),CURRENT_TIMESTAMP(),LOCALTIME(), SYSDAT

    2024年02月10日
    浏览(36)
  • Centos系统服务器挂载硬盘(ntfs格式和exfat格式)

    目录 前言 一、查看硬盘情况 1、fdisk -l 查看目前所有插在系统上的磁盘情况 2、df-h 查看目前已经挂载在系统上的磁盘情况 3、用mount挂载硬盘时,报错already mounted or busy 二、centos系统挂载硬盘 1、ntfs格式硬盘挂载 2、exfat格式硬盘挂载 1.首先安装库: 2、安装库参考网址: 3、

    2024年02月05日
    浏览(56)
  • chatgpt赋能python:Python数值互换:让你的编程更加高效

    Python是一种高级编程语言,其灵活性和易于学习的特点使其在科学计算、数据分析和人工智能等领域变得非常流行。作为Python的用户,很多时候你可能需要将数值类型之间进行转换,这样可以提高你的编程效率。在本文中,我们将介绍Python中数值互换的知识,并提供一些帮助

    2024年02月09日
    浏览(45)
  • 掌握这5款 Edge插件,让你的浏览器使用更高效!

    您好,今天我想向您推荐两款不常用的 Edge 插件,它们可以帮助您更高效地浏览网页和管理标签页。这些插件可能不像一些常见的插件那样广为人知,但它们的功能却非常实用。 IHome新标签页插件 下载地址: https://microsoftedge.microsoft.com/addons/detail/ihome%E5%8E%9Fbdtab%E6%96%B0%E6%A0%

    2024年02月04日
    浏览(43)
  • chatgpt赋能python:重新配置PyCharm,让你的Python编程更加高效

    PyCharm是一个流行的Python集成开发环境,被广泛用于Python编程。但是,有时候我们需要重新配置PyCharm以适应特定的工作需求或优化其性能,这篇文章将讨论如何重新配置PyCharm,以便更好地支持Python编程。 首先,我们需要了解PyCharm的配置选项,这里我们将重点介绍以下几个:

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包