实用隐写术。在PNG图像中隐藏信息





在黑客大赛和CTF(夺旗游戏)游戏中,有时会遇到隐秘术难题:为您提供一张图片,您需要在其中找到隐藏的消息在PNG图像中隐藏文本的最简单方法可能是在颜色通道之一或alpha通道(透明通道)中写入文本。要识别此类“书签”,有一些特殊工具,例如stegsolvepngcheckstegdetect,有时参赛者必须在GIMP或Photoshop中手动修改滤镜。



但是,进展不会停滞不前-最近,越来越多的隐藏数据的方法被使用,例如PNG填充。让我们看看这是如何完成的。



让我们从对PNG的“不可见”部分进行一些理论上的介绍开始。



阿尔法通道



在计算机屏幕上显示图片时,通过组合红色,绿色和蓝色成分来创建颜色。这三个颜色平面称为通道。它们通常写为RGB。



除了这三个通道之外,PNG可以具有一个称为alpha的第四通道(由字母A表示)以确定透明度级别。生成的RGBA图像确定可见颜色和透明度。



在大多数图形格式中,alpha通道是一个0%到100%(或0到255字节)之间的值。值为0%(黑色)表示应在图像中具有完全透明度的位置-在此,忽略RGB值,并且图像下方的背景完全可见。 alpha值为100%(白色)表示RGB通道是完全不透明的。中间值确定将背景与RGB像素值混合的量。





PNG Alpha梯度



Alpha梯度值通常用于将图像混合到另一个图像或网页上。 Alpha渐变可用PNG,WebP,ICO,ICN和其他栅格格式提供。 GIF格式仅支持布尔值(像素是透明的还是不透明的)。



Alpha通道只是放置隐藏文本的选项之一。让我们继续进行PNG填充以将数据直接写入二进制文件。



按列的PNG内容



PNG格式非常简单每个文件均以标准的八字节签名开头,此处为十进制值137 80 78 71 13 10 26 10第一个字节是在ASCII之外选择的,因此没有编辑器会意外地将图像误认为是文本文件。接下来的三个字节对应于字母P,N,G。然后是DOS换行符(13 10),用于防止类型程序打印出所有二进制垃圾的DOS文件结束标记(26)和Unix换行标记。



在头之后,具有标准结构的块开始。首先是IHDR块,它指示图像的宽度和高度,颜色空间,每个像素的位数,压缩方法,滤波方法以及是否存在隔行编码。宽度和高度分配了四个字节,其他参数分配了一个字节。



随后是带有文本元数据的可选tEXt块,例如生成PNG文件的程序的名称。您可以将纯文本信息写入文本块。



IHDR和tEXt之后是IDAT块,这些IDAT块具有用于位图像素的压缩RGB或RGBA值。渲染PNG时,将由IHDR处理,在内存中为图像分配一个缓冲区,从压缩格式中提取数据并将其逐像素写入缓冲区。 PNG文件以IEND块结尾。



在每个块的末尾都有该块的CRC校验和,该校验和使用标准算法计算得出



PNG图像通常每个RGB或RGBA通道包含8或16位信息,即每个像素输出三到八个字节。在这种格式下,所有字节都充满了有关颜色和透明度的有用信息,因此在图形图像的每一行的末尾,我们没有地方写入任意数据。



但是对于隐写术任务,您需要知道PNG还支持较低的颜色深度:1位(2种颜色),2位(4种颜色)和4位(16种颜色)。在这种情况下,事实证明关于几个像素的信息被存储在一个字节中。这就是出现用多余数据“水平”填充PNG的理论可能性的地方。如果以像素为单位的图片宽度不是8的倍数,则该行的最后一个字节包含未使用的位,这些未使用的位一起形成整个未使用的“像素列”。



对于1位图像,在每行的末尾可能有多达7个空闲位,这些空位将不会被解析器处理。对于2位图像,最后一个字节中最多有3个空闲位。 FotoForensics在线工具在PNG图像中找到此类未使用的“像素列”



但是,具有浅色深度的PNG图像非常少见,因此这种隐写方法可以认为是奇异的。如果您遇到2、4或16种颜色的PNG图像,仅此事实就会引起怀疑,并可以按列检查PNG内容。



完全不同的问题是在图片边界之外填充PNG。这是一种简单的隐写方法,可让您在图像中隐藏更多信息。



PNG-超出图片边界



PNG后像素填充不仅用于黑客攻击,还经常用于各种游戏,拼图和竞赛中。此方法的工作方式如下:



  1. 拍摄一个PNG图像(具有任何颜色深度)。





  2. .





  3. PNG, .

  4. hex-.

  5. IHDR. IHDR.





  6. IHDR — , — . c 00 00 01 9D (413 ), , 00 00 01 7E (382 ).





  7. CRC ( PNG CRC , IHDR), . CRC , PNG- IHDR.



    .





请注意,机密数据保留在图像的底部。文件大小未更改:335,906字节。只是解析器现在不处理这些像素-屏幕底部未显示图片的底部。



很容易猜测,在图片的“秘密”部分中,您不仅可以隐藏文本题词,还可以隐藏任意数据。例如,我们可以在此处编写受密码保护的RAR存档。秘密消息图片可以发布在Habrastorage或任何其他共享主机上。该消息仅由您之前与您就信息传输方法达成协议并与密码达成协议的人员接收。这样,恶意软件可以通过Habr和其他公​​共托管服务传输有效负载。






广告



托管站点的VDS与我们的史诗有关所有“开箱即用”的服务器都受到DDoS攻击的保护,可以自动安装方便的VestaCP控制面板。最好尝试一次;)






All Articles