游客发表

png图片隐写常见套路

发帖时间:2026-10-17 04:52:22

PNG图片隐写,片隐说穿了就是写常跟校验码和冗余数据玩捉迷藏。多数人以为藏个txt文件进去就叫隐写,见套那只是片隐入门级把戏。真正有意思的写常藏在IDAT数据块里——PNG压缩后的图像数据流,那才是见套兵家必争之地。

先看最简单的片隐LSB替换。PNG用无损压缩,写常每个像素点的见套红绿蓝通道各占8位,最低那一位对颜色影响微乎其微。片隐把秘密信息拆成bit,写常依次替换掉这些最低位,见套肉眼完全看不出来。片隐但有个致命破绽——改完后的写常图像统计特征会异常。正常照片的见套相邻像素差值呈现自然分布,被LSB填过的图,相邻像素的差值会莫名趋同。用卡方检验一跑,原形毕露。所以我常跟人说,LSB只适合对付不看图的菜鸟。

进阶玩法是改IDAT块的压缩流。PNG的IDAT用zlib压缩,压缩后的数据流末尾允许存在填充字节。这些填充不参与解压,但校验时只查CRC32。把秘密数据塞进填充区,再重新计算CRC32,检测工具根本不会察觉。不过有个坑——重新压缩时zlib版本不同,压缩结果可能产生差异,导致文件变大或变小。精明的分析者会对比原始文件大小,差异超过几个字节就起疑。

还有一种更隐蔽的:利用PNG的调色板索引。索引色PNG每个像素存的是调色板编号,而不是直接颜色值。把调色板里相近的颜色互换位置,像素索引值随之改变,但显示效果几乎不变。秘密信息就藏在索引值的奇偶性里。这种手法连像素直方图都骗得过,因为颜色总数没变,只是排列顺序变了。缺点是需要原始调色板做参照,否则解不出来。

别忘了PNG的扩展块——tEXt、zTXt、iTXt。这些块专门存文本信息,比如作者、注释。往里面塞东西太显眼,但有个反直觉的操作:把秘密数据伪装成压缩的zTXt块,再用合法注释掩盖。检测工具解析时只校验块长度和CRC,不会去解压内容。我见过一个案例,攻击者把完整加密字典塞进zTXt,表面看就是段乱码注释,实际是后续解密的关键。

最后说个冷门的——PNG文件头的IHDR块里,宽度和高度字段各占4字节。把宽度值改成极大数,很多解码器会尝试分配超大内存导致崩溃,但隐写工具能利用这个溢出漏洞传递数据。这种手法属于利用解析器缺陷,跟传统隐写不太一样,但实战中遇到过几次。防御办法很简单:先检查文件尺寸是否合理,再解析数据块。

说实话,PNG隐写本质是跟检测方的军备竞赛。每出一种新手法,就有对应的统计分析工具跟进。想真正藏住秘密,别只依赖单一技巧——把数据拆散,一部分塞进LSB,一部分塞进IDAT填充区,再伪造个EXIF信息干扰视线。多层混合才是活路。

    热门排行

    友情链接