看到这两天有小伙伴给我发邮件,说使用7-Zip查看交换数据流不太方便,问我有没有更好的一些方法,那么今天咱们就展开讲一下吧。
还是老样子,我尽量讲的细一点,因为有很多读者是没有基础的小伙伴,方便大家看完文章能够复现,如果是稍微有些基础的小伙伴可以跳着看。
先补充一下如何使用命令行查看交换数据流,首先,按下“Win”+“R”,输入“cmd”,点击“确定”。
使用“cd”命令切换到下载文件的目录,例如我的路径是“C:\Users\Administrator\Downloads”,则输入“cd C:\Users\Administrator\Downloads”。
然后,我们使用“dir”命令查看文件目录,但是我们加一个参数“/r”(显示文件的备用数据流),我们输入“dir /r”。
可以看到在“CyberChef_ZH_CN-master.zip”的下面有一行没有时间的文件“CyberChef_ZH_CN-master.zip:Zone.Identifier:$DATA”,这就是上篇文章中我们看到的数据流。
那么,我们该如何去读取他呢?我们可以使用“more”命令加重定向的方式读出来。
我们输入命令“more < 要读取的文件流”。
可以看到成功读取了,那么问题又来了,如果我们想创建一个文件流,该如何操作呢?
比较简单的方法是使用“echo”命令加重定向的方式将内容写到一个流,我们执行“echo ceshi > CyberChef_ZH_CN-master.zip:test”,在执行“more < CyberChef_ZH_CN-master.zip:test”,可以看到我们写入的“ceshi”被读出来了,但是同时被读出来的还有一个换行符。
当我们去掉重定向在执行一次,可以发现,当使用“echo”命令时,会在最后追加一个换行符。
那么我们怎么可以去掉最后的换行符号呢,我们可以使用“echo |set /p=”加内容的方式清除掉最后的换行符号,例如我们执行“echo |set /p=123”,可以看到最后没有换行符了。
为什么使用set就没有最后的换行了呢,我们可以使用“set /?”命令查看一下帮助。
可以看到帮助显示“/p”会将变量数值设置为用户的输入。
我们来测试一下,我们执行“echo|set /p=test2> CyberChef_ZH_CN-master.zip:test2”,在使用重定向加管道“more < CyberChef_ZH_CN-master.zip:test2”读取看下效果。
可以发现似乎换行还在,我们换个软件打开看看,我们使用notepad打开,执行“notepad CyberChef_ZH_CN-master.zip:test2”命令。
可以发现,最后的光标在第一行,而不是第二行,说明确实没有在最后追加换行符号。
除此之外,可能有细心的小伙伴在尝试的时候会发现,使用“copy”命令复制文件到数据流的时候会报错,那么该如何复制一个文件到数据流呢?
这里,博主提供一个比较简单的方法,使用“expand”命令,例如:
我们在使用“dir /r”命令,发现确定被复制了过来。
更多的我们就不展开讲了,有点偏离溯源的方向了。
不过各位小伙伴在复现或者工作中遇到了其他什么问题,也可以随时发邮件联系我。
最后的最后,希望大家能有所收获。
转载请注明:夜羽的博客 » 【原创】关于NTFS交换数据流(补充)