使用 Python 将文件嵌入图像文件的困惑

2016-08-11 14:28:25 +08:00
 theodorus

用 Python 学着网上的同学写一段小脚本。将 zip 文件嵌入 bmp(24bits)的数据区。可以将文件嵌入图像中。可是问题是图像的格式改为 zip 后不能解压了。需要再写一段脚本把 zip 提取出来?那样岂不是很麻烦。系统平台是 Linux 。 希望有朋友帮忙指点一下。什么方法才能直接修改后缀(文件直接读取)就 OK 呢?

2736 次点击
所在节点    Python
32 条回复
symeonchen
2016-08-11 16:57:50 +08:00
@theodorus 二进制追加的办法对 Rar 和 Zip 都有效, 7z 和 tar 我倒是没试过。
原理我大概写过一点,见![这里]( https://symeonchen.com/2016/07/11/%E4%BD%BF%E7%94%A8Python%E5%B0%86%E6%96%87%E4%BB%B6%E9%9A%90%E8%97%8F%E4%BA%8E%E5%9B%BE%E7%89%87%E4%B8%AD/)
关于 zip 和 rar 的文件头可以参考英文版的维基百科。
这种格式的文件又叫 Poyglot ,也可以以此为关键词查找相关资料。
theodorus
2016-08-11 17:16:51 +08:00
@symeonchen 谢谢。
sarikasama
2016-08-11 17:24:03 +08:00
我这里 python 和 bash 都没问题, jpg 、 png 、 zip 、 7z 也都没问题,额……
theodorus
2016-08-11 17:25:27 +08:00
@symeonchen 打算持续研究原理。可是在你的网站上我右键保存之后,再修改后缀。没法解压提示文件名已经损坏。用的解压软件是 OS X 自带的软件。 WINDOWS10 的我也试了一下好像不行。
不过有原理查起来就容易多了。
theodorus
2016-08-11 17:27:17 +08:00
@sarikasama 能不能把代码给我一下。我代码应该没错吧。如果愿意的话能不能把文件发给我下。我试了好多文件不可以。难道是我系统软件问题?
邮箱是 762352471@qq.com
谢谢。
SelFree
2016-08-11 17:30:37 +08:00
要想直接改后缀解压,应该是直接将压缩文件附加在图片后面。至于能不能解压,跟解压软件有关系,有的直接解析头部,肯定就不行。有的去搜索头部标识,这就没问题。试试 winrar 解压,如果还不行,试试 winrar+rar 格式。
theodorus
2016-08-11 17:46:48 +08:00
@SelFree 恩。刚才看到了 @symeonchen 的指南清楚多了。谢谢。
imn1
2016-08-11 18:24:31 +08:00
如果只是简单合并,你应该用 jpg 而不是 bmp
bmp 的图像大小和字节数是要通过文件头计算的,数据部分可以是任何字符
但 jpg 则有很明显的头尾标志字节, jpg 结尾字节为 FFD9 ,并且整个 jpg 文件理应只有一个 FFD9 出现,就是结尾
在 FFD9 后面加入任何数据,读图软件都会无视,所以很适合附带数据

所以应该把其他文件添加到一个标准 jpg 后面,提取的时候以第一次读到 FF90 为准,舍弃前面读取余下部分另存或直接处理

当然这种方式无加密作用
如果想用图片加密其他文件,请搜索“ steganography ”或者“隐写术”
symeonchen
2016-08-11 19:06:37 +08:00
@theodorus 抱歉,因为我链接中的图片放错了,所以无法解压,现已修复。如果无法用 7zip 等方式打开,可以尝试使用命令行 unzip XXX.zip 。
theodorus
2016-08-12 00:15:16 +08:00
@symeonchen 请问你对微博监控有兴趣吗。就是一直监视某个 USER 的信息。
我最近对这个比较感兴趣。但是我发现网上好多写的有问题或者不兼容(纯 CLI 下无法运行),我打算写一个这样的程序。但是不知道怎么才能实现完全的自动化。(跳过验证码之类的)
请问你在这方面有研究没?
theodorus
2016-08-12 00:18:22 +08:00
@symeonchen 请问你对微博监控感兴趣没?或者有过研究没?
我最近考虑写一个监控微博的自动脚本。但是网络上参考的有的代码太粗暴了或者无法在纯 CLI 下实现。
你有什么好的方法来实现这个功能没?
symeonchen
2016-08-12 10:14:21 +08:00
@theodorus 可参考 http://www.jikexueyuan.com/course/995_5.html
现在多了验证码,稍加修改即可使用。
如果有监控新微博的需求,可考虑开通微博会员。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/298649

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX