1、什么是NTFS数据流文件?
     要了解NTFS流文件之前,你应该对NTFS文件系统有一定的了解, NTFS是微软Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。NTFS比FAT文件系统更稳定,更安全,功能也更为强大。
这个NTFS数据流文件,也叫Alternate data streams,简称ADS,是NTFS文件系统的一个特性之一,允许单独的数据流文件存在,同时也允许一个文件附着多个数据流,即除了主文件流之外还允许许多非主文件流寄生在主文件流之中,它使用资源派生的方式来维持与文件相关信息,并且这些寄生的数据流文件我们使用资源管理器是看不到的。
2、为什么NTFS有数据流这个特性?
原意是为了和Macintosh的HFS文件系统兼容而设计的,使用这种技术可以在一个文件资源里写入相关数据(并不是写入文件中),而且写进去的数据可以使用很简单的方法把它提取出来作为一个独立文件读取,甚至执行。 
3、为什么资源管理器里面看不到文件所带的数据流文件呢? 
从网上找来的原因是:我们之所以无法在系统中看到NTFS数据流文件,是因为Windows中的很多工具对数据流文件的支持并不是很好,就像“资源管理器”,我们无法在“资源管理器”中看到有关数据流文件的变化。 
不过这个原因很奇怪,同样是MS自己做的东西,"资源管理器都支持不好,还有啥工具能支持好呢?" ,后来再想,也可能是这样一个原因:在当时写有关NTFS文件系统的数据流存储的时候很多WINDOWS工具没有相应的更新,同时呢NTFS流的显示与普通的文件不一样,需要使用其他的枚举方式来完成,再有NTFS对广大普通用户桌面用户来说没有必要去看到,更多的是被专业软件所使用,即使显示出来也没意义。 
4、如何查看,创建,删除NTFS流文件?
NTFS流文件分两种情况,一种是附着于宿主文件,一种是单独的数据流文件。这里将介绍两种编辑流文件的方法,一是系统自带的命令,一是使用工具。 
1)  系统命令编辑流文件实例:
a) 创建单独的数据流文件
命令行下使用下面的命令:echo "this is a stream file" > :test1.txt
OK,这样创建了的流对于dir或者资源浏览器是完全不可见的,就是说是隐藏的,只有使用notepad :test1.txt可以查看。而即使我们知道了它的存在也无法删除,系统del命令不支持删除流文件。
b) 关联数据流文件
首先在C:\下创建一个主文件,打开记事本输入this is the main file保存为test.txt,下面我们为它关联一个流文件。
命令行下输入:echo "this is a stream file" > test.txt:stream.txt”。这样我们就创建了一个名为stream.txt,内容为“this is a stream file”的数据流文件,并与宿主文件test.txt进行了关联。当然你是没法在C:\下找到steam.txt文件的,同时查看宿主文件test.txt文件,内容依然没变,但是如果你前后关注下这个宿主文件大小,你会发现变化的。同样只能通过命令行让它现形,输入:notepad test.txt:stream.txt,是不是打开了你刚创建的流文件了,哈哈,我是看到了。
2) 使用NTFS Streams info工具:
经过前面的操作,可以发现系统命令对NTFS数据流文件的支持还是很不好的,那么我们使用工具吧,NTFS Streams info,通过它你可以查看,创建,删除流文件。
a) 查看流文件
想知道你系统中到底哪些文件带着流吗?打开NTFS Streams info,在左窗口选择你要查看目录,切换到工具界面中间view标签页,单击start 按钮,右边窗口将以红色标记显示带着流的文件。如下图:
同样在访问文件的过程中,也可以用工具processmonitor查看,如果文件带了数据流文件,会被显示出来,如C:\readme.html:UnNamed,表示readme.html文件带了隐藏的数据流文件。
b) 创建流文件
右窗口选择一文件,下面我们为该文件关联数据流文件: 选择菜单Folder--Create new Ads from file ,这时你就可以将任意文件作为流文件关联在一个文件后面。
c) 删除流文件
使用NTFS Streams info查看到某些文件有带流文件后,再选择菜单: Folder--Remove ADS或者Batch Removeing即可删除对应的流文件。
还有一种删除方法,因为只有NTFS文件系统支持数据流文件,所以将文件转移到FAT文件系统下,所带的数据流文件自动就会被删除掉了。
5、NTFS流文件如何执行,数据流病毒如何防范?
虽然数据流可以插入,但你不能直接执行数据流文件,所以很多杀毒软件对这数据流病毒的支持不太好。可是病毒制作者常常能把病毒代码和执行的代码--(简单的调用和处理的命令)追加到流文件中,就有破坏系统的可能。
具体怎么执行的,那就需要好好分析下病毒技术了,鄙人才疏学浅,没整明白,下面是一种比较常见到的数据流文件执行方法:是直接在注册表中的run键下添加数据流文件的完整路径:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run,建立键值"123" = %filepath%: %streamName%,下次系统启动时就会自动运行该隐藏文件。
对于没有使用过苹果产品的我来说,NTFS数据流文件的好处,我没发现,说说坏处吧,正如前面提到的,因为任何文件都可以作为数据流文件,因为NTFS流文件的隐藏功能,这正好被投机倒把的分子利用了,做啥?搞破坏,还做的神不知鬼不觉。很多恶意软件可以使用数据流文件系统来隐藏恶意代码以逃避病毒扫描程序的检查。
那么如何防范呢?
a) 常见到的自解压文件,不要双击直接运行,可以在自解压文件上点击鼠标右键,选择“用Winrar打开”,如果发现其中的文件夹是空的,那么就要留个心眼了,很可能这就是一个数据流***陷阱。 
b) 不管杀毒软件是不是能查杀NTFS数据流***,***程序运行后,在内存中还是会还原出来的,一般的杀毒软件都带有内存监控功能,可以将***程序在内存中拦截下来。因此,勤升级杀毒软件也是防范NTFS数据流***比较有效的办法。
也有杀毒软件利用数据流的特性,如卡巴斯基扫描过文件之后,就以数据流的形式标记为白名单,这样却导致用户的硬盘空间被大量占用了,所谓的卡巴斯基吃硬盘就是这样,造成多少用户的困扰阿.

转载于:https://blog.51cto.com/haobinnan/168456

谈谈NTFS数据流文件相关推荐

  1. NTFS(文件恢复)最简单情况

    NTFS文件恢复(最简单情况) 原理:这里我们不深究NTFS 系统的细节,只根据需要了解相关知识. 工具:WinHex,DiskExplorer 问题一:NTFS 是什么? 是Microsoft公司开 ...

  2. 能否用痰盂盛饭——谈谈在头文件中定义外部变量

    能否用痰盂盛饭--谈谈在头文件中定义外部变量 - garbageMan - 博客园 能否用痰盂盛饭--谈谈在头文件中定义外部变量 "能否用痰盂盛饭"并非是一个技术问题,而是一个哲学 ...

  3. php生成图片文件流,php如何将base64数据流文件转换为图片文件?

    2017-03-07 在开发中,自己遇到一个前端在上传图片的时候,使用的base64数据流文件显示的图片. 也就是说 ***image/后面的jpg是我们的图片文件格式,(base64,)后面的很大一 ...

  4. 利用NTFS流文件隐藏

    首先用记事本新建两个文本文档,分别名为"1.txt""2.txt",其内容为"正常文件.数据流文件",打开CMD命令行窗口, 进入两个文件所 ...

  5. linux ntfs 写文件,Linux下写NTFS文件系统

    最近因为工作需要,安装了Debian Linux,保留了机器上原有的Windows2000操作系统.不幸的是我的磁盘分区格式都是NTFS的,在Linux下读是不成问题的:mount -tntfs /d ...

  6. 在命令行下对ntfs分区文件夹权限的设置

    随着Windows XP/Server 2003的流行,越来越多的用户开始选择NTFS文件系统,NTFS的好处自然是大大增强了系统的安全性,在"安全"标签页下, 我们可以在这里为不 ...

  7. P13、14-Windows与网络基础-NTFS之文件、文件夹权限

    该系列为"蜗牛学苑-网络安全"笔记,跟随课程加入自己见解,同时也为项目中碰到一些问题做了解答 大纲 1.背景知识-文件系统 1.1 Windows文件系统 1.2 Linux文件系 ...

  8. linux硬盘对拷慢,解决NTFS拷贝文件远比磁盘物理读取速度慢的问题

    问题 周末在Linux下搬运磁盘数据,发现一个很奇怪的现象.从通过ntfs-3g挂载的NTFS分区读取数据,写入到另外一个基于RAID1阵列的分区,理论上能到50MB/s+,实际上却只有20MB/s左 ...

  9. linux如何将ntfs删除文件,【实习记】2014-09-26恢复linux下误删的ntfs盘中的文件

    情景,ubuntu下把NTFS格式的盘中的"实习记"文件夹彻底删除了,追毁莫及,粗心觉不是一件好的事情. linux下回复ntfs盘下的文件不能用ext3grep,而使用debug ...

最新文章

  1. 透视鹏程.盘古:首个2000亿参数中文大模型是怎样炼成的?
  2. 使用CoreLocation进行定位(Swift版)
  3. java8中的Lamba表达式
  4. Windows 2008远程桌面多用户登陆的配置方法 - z
  5. mysql ddl dcl_MySQL常用DDL、DML、DCL语言整理(附样例)
  6. ASP.NET Core 网站运行时修改设置如何自动生效
  7. 第三十七期:为什么2019年人工智能算法岗求职竞争如此激烈?
  8. Jedis使用java连接Redis
  9. SQLMAP参数中文解说
  10. 为什么创业你只为少数人服务就够了?
  11. discord android .apk,Discord语音交流app
  12. 中文分词 及发展现状(总结的不错)
  13. 常见的9种大数据分析方法
  14. cvc 降噪_CVC降噪和DSP降噪有什么区别?
  15. linux - glib使用
  16. [OpenGL]导入obj文件
  17. 史上最全Java并发编程面试题(75道附答案)
  18. 北京十大it外包公司
  19. FTP修改默认端口后,注意事项
  20. vue中xe-utils的强大

热门文章

  1. lazada本地店和跨境店的优劣势分析
  2. Android NFC开发实战详解
  3. Java 9.while语句
  4. PokeCats开发者日志(二)
  5. 谈谈自己的理解:python中闭包,闭包的实质
  6. [Tyvj 1729] 文艺平衡树
  7. qt tableWidget 表格控件使用
  8. PHP易混淆函数的区分
  9. J - Max Sum
  10. leetcode第一刷_Construct Binary Tree from Inorder and Postorder Traversal