-
05-07-2019 - |
题
今天我看到这个奇怪的神奇NTFS系统支持:每个文件可以有多个数据流。基本上可以有一个大小为0的文件a.txt
,但是该文件的单独数据流中可以隐藏任意数量的字节。这是严格的NTFS相关魔法,我没有看到有这些流的任何高尚的原因。您可以在Sysinternals的streams
实用程序的帮助下查找NTFS流。这将告诉您,基本上每个讨厌的thumbs.db
文件都带有额外的数据流。
好的,现在我已经在Windows NT4系统上看到了这个神奇的工作,流添加到文件,复制,删除(在上述实用程序的帮助下),但我现在在Win XP系统上尝试这个,但是虽然我可以检测到现有的流,但是当我使用filename:streamname
语法时,我无法显示它们的内容,无法创建新内容或任何内容。
我收到此错误:
文件名,目录名或 卷标语法不正确。
实施例: 流实用程序的输出:
c:\DOWNLOADS>streams.exe -s .
Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com
c:\DOWNLOADS\1013.pdf:
:Zone.Identifier:$DATA 46
c:\DOWNLOADS>type 1013.pdf:Zone.Identifier
The filename, directory name, or volume label syntax is incorrect.
为什么我不能显示备用数据流的内容?
查看<!>上的Microsoft文档“
解决方案 从头到尾: NTFS数据流在Windows NT 4.0并且在所有后代中都存在(不包括win-95后代:98,Me)。在XP,Vista和Win 7中,它们仍然存在。只要Windows版本支持NTFS,它们就会支持文件流。他们将在很长一段时间内支持NTFS。 您在问题中显示的页面上描述了您所遇到的错误。 Microsoft只有一些与流一起使用的命令,实际上只有 Streams只适用于设计用于它们的程序,只是因为它们需要特殊处理(比较连接点,也是NTFS的一个功能,但是驱动程序隐藏了细节,程序不需要做任何事情特殊:他们只是将连接点视为真实文件)。 当您尝试使用 注意:您似乎认为备用数据流是奇数。它们很奇怪,因为它们是如此隐蔽,但许多主要的文件系统(HFS,NSS)都有它,这个概念可以追溯到80年代初。实际上,最初将流添加到NTFS以实现与其他文件系统的互操作。type
命令不了解流。使用:more < 1013.pdf:Zone.Identifier
使用流
<
,>
使用流,因此只能使用可以使用这些重定向运算符的命令。我写了一篇关于备用数据流的几篇博客文章,了解如何才能仍然只使用这些命令操纵流。start filename:streamname
打开文件流时,程序会显示<!>“非法文件名<!>”;或<!>“;找不到文件<!>”;并且您肯定流名称是正确的,那么程序可能不支持流。我注意到记事本,写字板和Word / Excel可以正常使用流,尽管Word和Excel认为这些文件很危险。您可以尝试一些实验。
其他提示
顺便说一下,你可以用记事本打开AltDataStream:
notepad.exe 1013.pdf:Zone.Identifier
此外,您可以指定AltDataStream的类型(不仅使用记事本,它是'完整流名称'):
1013.pdf:Zone.Identifier:$DATA
这是严格的NTFS相关魔法
不是这样 - Mac OS自那时起就有了这些,它们在那个世界被称为 forks ,你会使用ResEdit来实现它们。它们的经典用途是将媒体资产与可执行文件捆绑在一起。
备用流的一个可能目的:元数据。可以为文档添加大型描述,而不会影响原始文件的内容。
Win32 API处理备用流的命名就好了。
另一方面,当可能有* /?时,CMD会对文件名进行一些时髦的解析。当<!>“;:<!>”时扩展和barfs;存在。这就是复制和类型失败但简单重定向的原因。错误字面意思是它不被识别为备用数据流,并且您正在进行的引用包含路径名中不允许的特定字符(:
;其他字符不允许包括 \\
, /
等。)
尝试:
启动this_is_a.txt:ads.exe