windows中copy /B 实现文件里藏文件(文件隐写的实现)
最近研究图片的图片数字水印技术,发现很简单的两个文件合并成一个文件功能,然而还不影响原始文件的内容,我们将其称为图片文件的隐写。当然,小秘密或者私人文件需要隐藏但是又逃不过别人的多层“扫描”,那也可以通过简单的几行命令实现隐藏。一起来试试吧~~~# 0x02. 命令说明copy 是一个基础的DOS命令,也许在今天已经很少有人使用,但它仍然很实用。我们先看看文档说明
0x01. 问题背景
最近研究图片的图片数字水印技术,发现很简单的两个文件合并成一个文件功能,然而还不影响原始文件的内容,我们将其称为图片文件的隐写。当然,小秘密或者私人文件需要隐藏但是又逃不过别人的多层“扫描”,那也可以通过简单的几行命令实现隐藏。一起来试试吧~~~
0x02. 命令说明
copy 是一个基础的DOS命令,也许在今天已经很少有人使用,但它仍然很实用。我们先看看文档说明,如图:
于是,我们基本的命令格式如下:
copy /B 文件名1+文件名2 合并后的文件名
0x03. 玩转copy
0x03_1. 素材准备
如图,一张res.jpg图片,一个要被隐藏的secret.py文件。
0x03_2. 把文件藏进图片里
打开cmd命令框, 一定处于当前文件目录下,使用如下命令:
copy /B res.jpg+secret.py out.jpg
如图:
表示成功,我们对比一下,左图res.jpg是原图,out.jpg是生成图。
是不是看不出什么差别!再也不担心我的种子被兄弟们要走啦~~~
我们细心求证,真的隐藏了嘛?再看看细节:
out藏入的信息后,内容确实变大了!
0x03_3. 此处有坑
什么坑?那就是如何还原的坑,如果没有专业的工具,我们还是将要隐藏的secret.py转换成zip文件,一方面能再次减小合并后的文件大小,另一方面恢复隐藏内容只需要手动提取即可。因此,我们合并时候命令改变如下:
copy /B res.jpg+secret.zip out.jpg
产生同样的结果,但是我们对比一下文件属性,如图:
右边输出的out.jpg文件大小是不是变小了~~~
0x04. 文件恢复
我们如何将隐藏的文件恢复呢?很简单,只需要将out.jpg
改成out.zip
,如图:
直接解压即可得到被隐藏的文件secret.py.
0x05. 探索原理
我们将合并后的文件,使用winhex打开,如图:
发现原始文件的前面部分一点不变化,我们拖到最后面,查找十六进制FFD9,它是jpg文件的结束标识,如图:
那后面的一堆内容是什么呢,我们将其复制出来,创建新的文件,发现是一个名为secret.zip的文件,里面包含secret.py。
那么很容易解释原理了,copy /B
命令其实就是将两个文件的二进制结合即可,形成了一个新的二进制文件,但是window环境下,jpg文件只识别到文件末尾的FFD9标识符后即不再往后识别展示。因此后面添加什么只要不是FFD9,都是可以正常解析出来看到。
0x06. 写在最后
如果各位看官熟悉kali,当然这种问题也属于CTF杂项中的隐写问题,那么可以直接使用工具:
binwalk查看是否隐写,foremost进行文件的分离即可。又或者用StegSolve去分析文件信息又或者使用winhex查看文件的表示段字符方式进行分离。(想到这里,我感觉我也可以出题去了哈哈哈哈~~~)
上述方法对于MP3文件的组合也可以起到作用,实现音乐的大串烧,如果想用java实现,详细代码请戳:传送门
如果觉得写的不错,麻烦给个关注吧!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)