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

NTFS ADS(备用数据流)的更多相关文章

  1. SVN二次开发——让SVN、TSVN(TortoiseSVN)支持windows的访问控制模型、NTFS ADS(可选数据流、NTFS的安全属性)

    SVN二次开发 ——让SVN.TSVN(TortoiseSVN)支持windows的访问控制模型.NTFS ADS (可选数据流.NTFS的安全属性) SVN secondary developmen ...

  2. NTFS的交换数据流ADS应用

    NTFS的交换数据流ADS应用   NTFS是Windows常用的文件系统格式.该格式支持交换数据流(Alternate Data Streams,缩写ADS)特性.该特性可以让多个文件流使用同一个文 ...

  3. NTFS系统的ADS交换数据流

    VC++ 基于NTFS的数据流创建与检测 What are Alternate Streams?(交换数据流) NTFS alternate streams , 或者叫streams,或者叫ADS(w ...

  4. Windows 备用数据流(ADS)的妙用___转载

    NTFS交换数据流(Alternate Data Streams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流.通俗的理解,就是其它文件可以“寄宿”在某 ...

  5. NTFS ADS带来的web安全问题

    有关ADS的简单说明请看http://www.xfocus.net/articles/200212/466.html 可以看到ADS在很久以前就被一些安全人员所关注,并且也提出了一些经典的利用,比如隐 ...

  6. UNCTF杂项题Hidden secret 之NTFS交换数据流隐写

    ---恢复内容开始--- 做这道题目的经历比较坎坷,题目中用于隐藏flag的jpg文件出了问题,导致不能被交换数据流隐写所以出题人换了一次题目,最后做法也换了,不过出题人一开始的考察点还是基于NTFS ...

  7. NTFS格式下的Alternate Data Streams

    今天我写点NTFS的交换数据流以及其带来的安全问题(Alternate Data Stream/ADS) =============================================== ...

  8. windows7命令帮助大全

    有关某个命令的详细信息,请键入 HELP 命令名ASSOC 显示或修改文件扩展名关联.ATTRIB 显示或更改文件属性.BREAK 设置或清除扩展式 CTRL+C 检查.BCDEDIT 设置启动数据库 ...

  9. DOS命令详解

    DOS命令详解 命令 \? 可以进入命令帮助 1.md命令创建目录. MKDIR [drive:]pathMD [drive:]path 如果命令扩展被启用,MKDIR 会如下改变: 如果需要,MKD ...

随机推荐

  1. 通过了解Servlet和Http之间的关系,了解web中http通信使用

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512336761551585796/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...

  2. android入门--环境搭建

    运行环境 windows 7 下载地址 环境下载 最近开接触Android(安卓)嵌入式开发,首要问题是搭建Andoid开发环境,由于本人用的是windows7的笔记本,也就只能到Windows中搭建 ...

  3. Solon 开发,七、自定义注解开发汇总

    Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...

  4. 使用.NET 6开发TodoList应用(填坑1)——实现当前登录用户获取

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在前面的文章里使用.NET 6开发TodoList应用(5)--领域实体创建,我们留了一个坑还没有填上,就是在数据库保存的时候 ...

  5. [GKCTF2020]EZ三剑客-EzNode&[GYCTF2020]Ez_Express

    写在前面 Nodejs基础一点没有做题还是很难下手的,要学的还很多 [GKCTF2020]EZ三剑客-EzNode 知识点 1.settimeout溢出 2.沙盒逃逸 题解 打开题目,看源代码 app ...

  6. 【转载】ASP.NET 内联代码、内联表达式、数据绑定表达式使用方法罗列(形式就是常说的尖括号 百分号 等于号 井号)

    ASP.NET 内联代码.内联表达式.数据绑定表达式使用方法罗列(形式就是常说的尖括号 百分号 等于号 井号) 今天在做渭南电脑维修网的一个小功能时遇到了一些问题,因此特别列出,以备他日之用. 首先对 ...

  7. Spring Boot 3.0.0 发布第一个里程碑版本M1,你的 Java 升到17 了吗?

    2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M1. 下面一起来来看看Spring Boot 3.0.0 M1版本都有哪些重大变化: Java基线从 ...

  8. Qt之QFileDialog

    widget.h: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QString> class W ...

  9. /etc/crontab和crontab -e的区别

    (1) /etc/crontab是系统级别的crontab,系统的设置等,这种方法只有root用户能用 crontab -e是用户级的crontab,会被写到 /var/spool/cron 目录下, ...

  10. hadoop面试

    hadoop.apache.orgspark.apache.orgflink.apache.orghadoop :HDFS/YARN/MAPREDUCE HDFS读写流程 NameNode DataN ...