Skip to content

简单的隐藏文件方法+原理

从别处看来的,用DOS命令copy/b把RAR格式的文件藏到JPG里,如下

copy/b in.jpg + source.rar out.jpg

这样在windows里out.jpg照样是原来的样子,双击打开之类的都是原先的图像内容,没有任何改变,但尝试用WinRAR打开out.jpg时,就会发现打开的是source.rar的内容。

看到这里,我第一个反应是实验别的格式,尝试了把ZIP和RAR文件添加到JPG/BMP/GIF/PNG,没有问题,全部可以实现。然后把TXT添加到图像格式里,用记事本打开,在乱码的最后能隐约看到原来文件的样子,英文都能看到,中文全是乱码。然后把ZIP/RAR添加到PDF里,也能通过。把 ZIP/RAR添加到MP3/WMA/MID里,添加完后的音频不受影响,但ZIP/RAR打不开了,没有意义。别的格式没有多试。这样看来,这种方法比较实际的用处是把自己敏感的银行密码阿,账号阿,某XX网站地址阿,某人的生日阿写到记事本里,然后用WinRAR打包加密码,然后藏到随便哪张合法正常普通的图片里。就算有人用WinRAR去打开它,没有密码也看不到什么。也可以把收集的XX图,不要太多,打包加密码,藏起来,不知道文件太大会不会有影响,具体没试过。一般情况下,这样能保住自己的一点小秘密了,总比明着放一个加了密的RAR包在那里好吧,那不是诱惑别人去解开它么。

这种方法的原理是什么呢?copy/b的作用是把两个文件首尾接起来,串个串。一般情况下,这样会破坏2个文件,造成无法读取,其实,能不能读全看程序怎么处理文件和文件本身的格式。留言讨论里有人回复说是因为图像格式的文件大小定义在头部,而RAR格式的文件大小定义在尾部,所以2个文件共存才没有冲突。不知道对不对,google一下,查了BMP的文件格式,BMP文件简单来说分4个部分,文件头+图像头+颜色表+数据区,具体格式在这里可以看到。文件头部分有bfSize是定义整个文件大小,就是从文件头开始到数据区结束的总大小,也就是说,超出这个偏移的数据对文件来说没有意义,读图的程序也不会去理会,程序只读取bfSize里定义的那么多数据,别的一概不管。而RAR格式呢,由于是私有格式,我只能查到一点点信息,这里解释了一部分格式的定义,由此我的理解是RAR文件内部以区块为单位,数据以区块存储,区块数量和大小不定,但必须包含几个特定区块,用来保存基本信息,所有数据分段的保存在大量区块中,类似IP数据包,而每个区块有独立的大小定义以及类似链表的关联定义,每个区块的大小都可知且独立。这样推测WinRAR读取文件的过程是先查找,再验证,再读取,也就是说找到区块,读取大小和类型信息后把整个区块的数据读出来,而区块外,区块间的数据对WinRAR来说无意义。这样就好解释之前的方法了,图像程序对于头部定义的大小之外的数据不管,WinRAR对于区块外的数据,也就是图像的数据不管,2个互相不管,各读各的,当然可以共存。推而广之,2种格式类似以上情况的都可以共存。

有人骂作者说这种根本是伪加密,用普通的16进制查看器就能简单的分离出2个文件,useless,我看这个傻鸟老外也太较真了,对于商业应用连MD5都被数学家破解了,对于我们平头小百姓需要用到军事级的加密么,这点小伎俩足够保住我们的小秘密了。电影里演那些很厉害的系统都会说有几重几重的密码保护,然后那些牛X人就很艰难的也是必然的一重一重全破了。模仿一下,把要加密的东西重复打包加密码,每次密码不一样,N重密码,够保险了吧。说到加密,曾看到一篇关于世界上最牛X特工的报道,此人破解了据说是美国国防级的一个什么系统的密码,数年后资料解密,此人被问到如何办到的时,他说,他打了个电话给几个密码持有人,谎称是工作人员,三下两下就问出密码了,费事去破解干嘛(费那事干嘛~~黑皮名言)

我没事去想这个破原理干嘛,有病。

Post a Comment

Your email is never published nor shared. Required fields are marked *