Damn1t
for you I bleed myself dry
FRIENDS
baidu

png文件结构与信息隐藏

2019-04-10 隐写

png文件结构与信息隐藏

PNG(Portable Network Graphics),PNG supports palette-based images (with palettes of 24-bit RGB or 32-bit RGBA colors), grayscale images (with or without alpha channel for transparency), and full-color non-palette-based RGB/RGBA images (with or without alpha channel).

文件格式

file header

固定的8byte:
89 50 4E 47 0D 0A 1A 0A
其中第一个字节0x89超出了ASCII字符的范围,这是为了避免某些软件将PNG文件当做文本文件来处理

“Chunks” within the file

length chunk type chunk data crc
4byte 4byte length 4bytes

关键数据块(critical chunks)

(1) 文件头数据块IHDR(header chunk)

  • 包含PNG文件的基本信息
  • 一个PNG数据流中只能有一个IHDR
  • 必须在PNG文件最前面

(2) 调色板数据块PLTE(palette chunk)

  • 包含有与索引彩色图像(indexed-color image)相关的彩色变换数据
  • 必须在IDAT之前

(3) 图像数据块IDAT(image data chunk)

  • 存储实际的数据
  • 可存在多个
  • 必须与其他IDAT连续

(4) 图像结束数据IEND(image trailer chunk)

  • 固定格式,16进制为: 00 00 00 00 49 45 4E 44 AE 42 60 82
  • 必须在PNG文件最尾部

IHDR详细结构

域的名称 字节数 说明
Width 4 图像宽度,以像素为单位
Height 4 图像高度,以像素为单位
Bit depth 1 图像深度:索引彩色图像:1,2,4或8; 灰度图像:1,2,4,8或16; 真彩色图像:8或16
ColorType 1 颜色类型:0:灰度图像, 1,2,4,8或16; 2:真彩色图像,8或16; 3:索引彩色图像,1,2,4或8; 4:带α通道数据的灰度图像,8或16; 6:带α通道数据的真彩色图像,8或16
Compression method 1 压缩方法(LZ77派生算法)
Filter method 1 滤波器方法
Interlace method 1 隔行扫描方法:0:非隔行扫描; 1: Adam7(由Adam M. Costello开发的7遍隔行扫描方法)

辅助数据块(ancillary chunks)

用于辅助指示PNG图像中的层、文字等信息

可删除,不影响图片浏览,但图像将失去原来的可编辑性

(1) 背景颜色数据块bKGD(background color)

(2) 基色和白色度数据块cHRM(primary chromaticities and white point)

(3) 图像γ数据块gAMA(image gamma)

(4) 图像直方图数据块hIST(image histogram)

(5) 物理像素尺寸数据块pHYs(physical pixel dimensions)

(6) 样本有效位数据块sBIT(significant bits)

(7) 文本信息数据块tEXt(textual data)

(8) 图像最后修改时间数据块tIME (image last-modification time)

(9) 图像透明数据块tRNS (transparency)

(10) 压缩文本数据块zTXt (compressed textual data)

crc32原理

reference:
https://en.wikipedia.org/wiki/Portable_Network_Graphics
https://www.cnblogs.com/lidabo/p/3701197.html
https://3gstudent.github.io/3gstudent.github.io/隐写技巧-利用PNG文件格式隐藏Payload/
https://xz.aliyun.com/t/1833

Author: damn1t

Link: http://microvorld.com/2019/04/10/misc/png隐写/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
分享一些国外著名的黑客技术学习网站
NextPost >
MidnightSun CTF 2019
CATALOG
  1. 1. png文件结构与信息隐藏
    1. 1.1. 文件格式
      1. 1.1.1. file header
      2. 1.1.2. “Chunks” within the file
      3. 1.1.3. 关键数据块(critical chunks)
        1. 1.1.3.1. IHDR详细结构
      4. 1.1.4. 辅助数据块(ancillary chunks)