必须使用sysinternals官方streams.exe工具才能快速准确确认ads存在,因windows原生命令dir /r功能受限:不递归、不显示内容、对空流及目录级ads支持弱;streams需命令行调用,-a参数可强制显示系统隐藏流(如zone.identifier),-s参数实现目录递归扫描,配合powershell可进一步读取流内容。

要快速确认某个文件或文件夹是否携带NTFS备用数据流(ADS),必须使用Sysinternals官方工具Streams.exe——Windows原生命令如dir /r仅能列出流名和大小,但无法递归扫描、不显示流内容、且对空流或目录级ADS支持极弱。
下载并准备Streams.exe
访问微软官方Sysinternals页面(live.sysinternals.com/streams.exe),直接下载Streams.exe到本地,比如C:\Tools\streams.exe。无需安装,双击运行会报错,它必须通过命令行调用。
右键开始菜单→“Windows Terminal(管理员)”,执行:cd /d C:\Tools 切换到工具所在目录。这一步不可跳过,否则系统会提示“不是内部或外部命令”。
查看单个文件的ADS
输入:streams -a test.txt
其中-a参数强制显示所有流(包括系统隐藏流如Zone.Identifier),不加该参数时默认忽略以$开头的系统流。若输出显示“test.txt: Zone.Identifier:$DATA”,说明该文件是从互联网下载的,已被浏览器自动打标。
Windows 命令行编码与兼容规范。涵盖 GBK/UTF-8 编码、PowerShell/pwsh 互操作、Python/Node.js、Git 配置及代码生成规则。适用于 Windows 10/11 + MSYS2/Git Bash 环境下的所有命令行操作。
注意:Streams不会自动识别当前路径下不存在的文件。如果提示“Could not open file”,请核对文件名拼写、扩展名是否被隐藏、以及是否在正确目录下执行。
批量扫描整个文件夹及其子目录
第一步:确保目标文件夹是NTFS格式(FAT/exFAT不支持ADS);
第二步:执行:streams -s -a D:\sensitive_docs;
第三步:等待扫描完成,结果中每行格式为“文件路径:流名:$DATA”,例如:D:\sensitive_docs\report.xlsx:Thumbs.db:$DATA。
-s参数开启递归扫描,漏掉它就只会检查文件夹本身,不会进入子目录。扫描过程无进度条,大目录可能耗时数分钟,不要误判为卡死。
查看ADS内容(需配合其他命令)
Streams本身不能读取流内容,只能定位存在性。确认某流存在后,用PowerShell读取:Get-Content "D:\test.txt:secret"。
如果返回“无法找到路径”,说明流名拼写错误或已被清空;如果返回乱码,大概率该流存的是二进制数据(如嵌入的exe或图片),此时应改用Get-Content -Raw -Encoding Byte "D:\test.txt:secret"导出原始字节。










