• NTFS ADS(备用数据流)


    NTFS Alternate Data Stream(ADS)

      1993年微软推出了基于流行的NT平台的Windows NT操作系统。之后,NTFS作为WIndows开发基于NT的操作系统时的首选文件系统,逐步取代被应用于旧版Windows操作系统(比如Windows 9x)的文件系统,即FAT(File Access Table)。

      NTFS中的备用数据流(Alternate Data Stream,ADS)允许将一些元数据嵌入文件或是目录,而不需要修改其原始功能或内容。

      在NTFS中,主数据流指的是文件或目录的标准内容,通常对用户可见,而备用数据流(ADS)则隐藏。如果要查看备用数据流,可以使用dir命令的/R选项,或是Windows提供的streams.exe工具,没有可用的API。

      ADS没有大小限制且多个数据流可以和一个正常文件关联。ADS的内容也不仅限于text文本数据,基本上只要是二进制格式文件都可以被作为ADS备用流嵌入。

    使用备用数据流(ADS)

      查阅多篇文章,大致了解了下ADS的命名方式,以及使用ADS的一些方法。

      所有的文件在NTFS中至少包含一个主数据流,也就是用户可见的文件或是目录,一个文件在NTFS中真正的文件名称格式:

    <文件名>:<流名>:<流种类>

    1. 文件ADS

      默认的数据流没有名字,一个文件test.txt在NTFS中的全名为test.txt::$DATA,可以在命令行中执行如下命令查看test.txt文件内容:

    notepad test.txt::$DATA

      也可以用一下命令创建test.txt:

    echo "test.txt file content." test.txt::$DATA

      对于已经存在的文件test_1.txt创建备用数据流:

    echo "test_1.txt ads data stream" > test_1.txt:test_1.txt_ADS 或

    echo "test_1.txt ads data stream" > test_1.txt:test_1.txt_ADS:$DATA

      查看ADS数据:

    notepad test_1.txt:test_1.txt_ADS 或

    notepad test_1.txt:test_1.txt_ADS:$DATA

      同样可以使用创建备用数据流的方式顺带新创建一个文件,但是输出的数据被存放于ADS中,新文件则为空:

    echo "test_2.txt ads data stream" > test_2.txt:test_2.txt_ADS 或

    echo "test_2.txt ads data stream" > test_2.txt:test_2.txt_ADS:$DATA

      数据被存储于test_2.txt:test_2.txt_ADS:$DATA备用流中,而被创建的test_2.txt则为空。

    1. 文件夹ADS

      文件夹没有默认的数据流(也就是没有主数据流),但是有一个默认的目录流为$INDEX_ALLOCATION,默认的流名为$I30。比如文件夹testDir全名为testDir:$I30:$INDEX_ALLOCATION,可以使用以下特殊方式进入testDir:

    cd testDir:$I30:$INDEX_ALLOCATION 或

    cd testDir::$INDEX_ALLOCATION(忽略了流名)

      也可以使用以下命令创建目录testDir

    md "testDir::$INDEX_ALLOCATION" 或

    md "testDir:$I30:$INDEX_ALLOCATION"

      经过测试可以为已存在的目录创建ADS,比如testDir

    echo "i am testDir:testDir_ADS:$DATA data stream" > testDir:testDir_ADS 或

    echo "i am testDir:testDir_ADS:$DATA data stream" > testDir:testDir_ADS:$DATA

      但是没法正常打开,使用winhex查看硬盘倒是可以确定数据流的存在。

      删除备用流所删除的文件或文件夹时,相应的备用流也会被删除。

    参考

      NTFS Alternate Data Stream (ADS)

      NTFS格式下的Alternate Data Streams

  • 相关阅读:
    VS2013连接SQLSERVER数据库时显示无法添加数据连接
    线段树模板
    网格中的极大子矩形的另类解法
    斜率优化
    三维前缀和
    Math Magic ZOJ
    01背包 多重背包 完全背包模板记录
    多重背包的单调队列优化
    Largest Rectangle in a Histogram POJ
    Game with string CodeForces
  • 原文地址:https://www.cnblogs.com/zUotTe0/p/13455971.html
Copyright © 2020-2023  润新知