从 NTFS 替代数据流中检索数据

问题描述

我在一个文件中有一个 ADS:

17/03/2021  17:27               100 test2.txt
                                 10 test2.txt:1:$DATA
               1 File(s)            100 bytes
               0 Dir(s)  some bytes free

我通过 type somefile > test2.txt:1 得到的结果是正确的 10 字节 ADS。

但是当我从 ADS 中将它转换为单独的文件时,我得到了额外的 2 个字节 (0d0a):

findstr /V /L W3Alllov3DonaldTrump <test2.txt:1>test.exe

如何避免这种情况(并获得与原始文件类似的 10 字节文件而不是 12 字节文件)?

解决方法

它是 findstr,它添加了行尾 (CRLF,0d0a)。与 findtypemore 相同。所以你不能使用这些命令之一。 Copy /b 将是一个解决方案,但它不接受 ADS 名称。

如果 ADS 中只有一行(我认为是):

set /p "x="<"test2.txt:1"
<nul set /p "=%x%" >test.exe

注意:set 命令有长度限制,我不确定它对不可打印字符(尤其是 NUL (0x00))的反应(这对于任何东西都很常见,我希望在 .EXE) 中使用,因此这可能用途有限。