你大概也有过这种想法:想在某个地方塞点只属于自己的东西,但又不想让路过的人一眼看出来。
我做的小工具 影藏 PolyFlix,干的就是这事——把一个普普通通的文件,藏进一段能正常播放的视频里。
一个文件,两种身份
影藏做出来的那个文件,既是视频,又是压缩包。
- 你双击它,它老老实实开始播放,谁看都是个正常
mp4视频; - 你把后缀名改成
.zip,它又能被 7-Zip 这类工具直接打开,取出里面藏的东西。
这种「一个文件身兼两职」的玩法,安全圈有个专门的词叫 多态文件(polyglot)。说白了就是:让两种格式的规则在同一个文件上同时成立。
文件隐藏模式:把任意文件塞进伪装视频,左边实时显示你的嵌套结构
说到底这技术本身不新鲜。早年混过贴吧的人大概都见过——把文件塞进一张图片里,改个后缀当压缩包解。但图片这伪装太容易露马脚了:谁家好好的图片动不动就好几个 G 啊?可视频就不一样了,几个 G 再正常不过吧。所以拿视频当壳,天然就比图片隐蔽得多。
它还有个配套的兄弟项目 影现播放器 。影现能直接认出影藏产出的「双视频」文件,不用解包、不用改后缀,自己人一看就知道里面还藏着东西。
这篇讲怎么藏,下一篇 讲怎么认出来。
两种藏法,看你想藏什么
文件隐藏:把任何东西塞进视频
最直白的用法。你丢一个(或一堆)文件进去,再选一段 MP4 当外壳,影藏就把文件打包塞到视频后面。
想加保险?外层可以上 AES-256 密码;还不放心,里面还能再套一层压缩包、各自带独立密码,搞成「套娃」。左边那个结构预览会实时告诉你现在叠了几层,不会藏到一半自己都乱了。
取出来的时候也简单:改 .zip → 解压(输密码)→ 要是还有内层,再用 7-Zip 开一层,原文件就回来了。
双视频:一个视频里再藏一个视频
这个模式最让我自己觉得好玩,也是和影现配合最紧的。
你把视频 b 藏进外壳视频 a 里,出来的文件依然是个完全合法的 MP4。普通播放器双击它,只播 a,播完就结束,毫无异样;而影现播放器能把它翻出来单独放,还能一键导出成独立文件。
至于影藏是怎么在「不改动伪装视频一帧画面」的前提下,把另一个视频悄悄安进去的——这里头用了一点小手段。先卖个关子,你只要知道结果就够了:一个视频里真的能再藏一个视频,而对旁人来说它始终只是个普通视频。
双视频模式:把一个视频藏进另一个视频里
另外多说一句:双视频这种模式,算是之前没怎么出现过的东西——你可以理解成「幻影坦克」的视频版。
它最较劲的一点:不重编码
做这种工具,最怕的就是「为了藏东西把原视频重新压一遍」,又慢又掉画质。
整个过程中,伪装视频的画面和声音数据一字节都不动。双视频模式里,藏的东西是「挂」上去的,外壳原样保留,连改外壳的元数据也是直接用 mutagen 就地改一笔,不重新编码、不加轨道;文件隐藏模式里,伪装视频本身一点没动,文件打包后接在后面。1GB 的文件大概零点零几秒就完事。
一些我替你想到的坑
隐写最容易翻车的就是套娃套错层,影藏在这几处做了拦截:
- 想拿「影藏产物」再当外壳视频?直接拦下。不然原有的隐藏数据会被夹到中间,标准工具取不出来,等于白藏。
- 文件隐藏模式下,把产物当「要藏的文件」套娃是允许的——解压出来再解一次就行。
- 双视频模式下,把产物当「隐藏视频」再藏一层?也拦下。影现只播外壳那层,内层解不出来,纯属白费功夫;真要嵌套请用文件隐藏模式。
当然,正经提醒一句:请合法使用,别拿去干坏事。
为什么不做成命令行
以前往图片里藏东西,大多是在命令行敲的。别说小白用户了,就是大佬,隔一段时间再去藏个文件,也未必记得住命令怎么敲。而我们影藏是个正经的图形软件:界面直观,操作丝滑,选好文件点一下就出成品。
下载方式
影藏与影现的官网:https://polyflix.sxrec.com/
下一篇 聊聊影现是怎么「一眼认出自己人」的,以及它怎么在你本机不联网就把双语字幕给你做好了。
开源协议 GPL-3.0,随便玩、随便改,别忘了一起开源回来。
加载评论中...
哎呀!Giscus评论模块加载失败啦~
Giscus是基于Github Discussions的,或许当前网络无法访问Github哦!