png格式加密粗解
1858 6
实名

通过了实名认证的内容创造者

发布于 2022-4-27 14:22:57

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 DiGiToTo 于 2022-4-27 17:03 编辑

解答某水友的悬赏。https://www.element3ds.com/forum.php?mod=viewthread&tid=438328
1.png
以上面这张图为例,用ultraEdit打开。

image.png
显示这张图的16进制数据。


89 50 4E 47 0D 0A 1A 0A 前8个字节为图片格式:png

紧接着是描述图像的基本信息(IHDR)

00 00 00 0D 说明IHDR头块长为13(0D转换为10进制为13)
49 48 44 52是IHDR标识码,固定格式,不改变。加解密时可以查找这个数据快速定位基本信息。
接着的13个字节,保存图片基本信息。
最后接4个字节校验码(D7 30 C0 F8),校验码会随前面的数据的改变而改变,但长度不变。


上图中,保存图片基本信息的13个字节:00 00 04 00 00 00 05 23 08 02 00 00 00 其中:
00 00 04 00 图像宽度 1024
00 00 05 23 图像长度 1315
08 色深 2^8 256色图片
02 颜色类型 真色彩图片
00 PNG Spec规定此处总为0(非0值为将来使用更好的压缩方法预留),表示使用压缩方法(LZ77派生算法)
00 同上
00 非隔行扫描
可以根据IHDR标识码来定位上面的数据,修改

这个是上面说过的从00 00 00 0D 到D7 30 C0 F8这个数据块

校验码后面接辅助数据块和专用公共数据块,比较杂,不一定都有。出现的话应该都有标识码,可以根据标识码快速定位。

上图接的是pHYs物理像素尺寸数据块。下面这张图含有sRGB,gAMA等数据。这些数据也可以加密。可以根据画圈的部分模糊判断该段都有些什么数据块,根据标识码迅速定位。

PNG文件格式规范制定的10个辅助数据块是:
1. 背景颜色数据块bKGD(background color)。
2. 基色和白色度数据块cHRM(primary chromaticities and white point)。所谓白色度是指当R=G=B=最大值时在显示器上产生的白色度。
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)。
压缩文本数据块zTXt (compressed textual data)。
这些数据也可以加密

这个针对 调色板数据块 进行加密

这个图就是针对图像透明数据块进行加解密 的方法

关键数据块、辅助数据块和专用公共数据块(special-purpose public chunks)综合下表中:
数据块符号
数据块名称
多数据块
可选否
位置限制
IHDR
文件头数据块
第一块
cHRM
基色和白色点数据块
在PLTE和IDAT之前
gAMA
图像γ数据块
在PLTE和IDAT之前
sBIT
样本有效位数据块
在PLTE和IDAT之前
PLTE
调色板数据块
在IDAT之前
bKGD
背景颜色数据块
在PLTE之后IDAT之前
hIST
图像直方图数据块
在PLTE之后IDAT之前
tRNS
图像透明数据块
在PLTE之后IDAT之前
oFFs
(专用公共数据块)
在IDAT之前
pHYs
物理像素尺寸数据块
在IDAT之前
sCAL
(专用公共数据块)
在IDAT之前
IDAT
图像数据块
与其他IDAT连续
tIME
图像最后修改时间数据块
无限制
tEXt
文本信息数据块
无限制
zTXt
压缩文本数据块
无限制
fRAc
(专用公共数据块)
无限制
gIFg
(专用公共数据块)
无限制
gIFt
(专用公共数据块)
无限制
gIFx
(专用公共数据块)
无限制
IEND
图像结束数据
最后一个数据块
tEXt和zTXt数据块中的标准关键字:
CreationTime
原图创作时间
Software
创作图像使用的软件
Disclaimer
弃权
Warning
图像内容警告
Source
创作图像使用的设备
Comment
各种注释

然后是DAT:
对比一下两个png图片的数据发现,DAT数据块的标志位在00 00 80 00 49 44 41 54 78。 第三四的是80 00,另一张00 00 FF A5 49 44 41 54 78,第三四字节是FF A5。不同软件生成的图片这个数据可能会发生改变。但都是以49 44 41 54 78 做结尾。

从78之后的地方开始一直到整个文件尾部的结尾标志处的数据都是图片的具体数据。加密的话,一般都是对这一部分的数据进行加密。通过DAT数据块标识可以快速定位这里。

结尾标志00 00 00 00 49 45 4E 44 AE 42 60 82

加解密:使用python或vc 读取图片,查找标志位,修改数据。


评分

参与人数 6元素币 +69 活跃度 +39 展开 理由
讲不出再见... + 10 + 10 找到了加密规则 怎么批量破解加密图片出来呐
碎水 + 6 + 12 【给力】阅贴无数,楼主最强!
元素界王神... + 18 + 2 从业不识微元素,做遍项目不算数。
舟子凡 + 6 + 3 Niubility!!!
浮世绘 + 14 + 10 先定一个小目标,赚它一个亿元素币!
molimoli + 15 + 2 千点万点,不如微元素指点。

查看全部评分

收模型,杂志,教程,插图,插件,软件,拿来卖。
使用道具 <
昕晨  发表于 2022-4-27 14:33:01  
2#
感谢楼主分享
回复 收起回复
使用道具
逆水寒  发表于 2022-4-28 21:50:16  
4#
学习
回复 收起回复
使用道具
讲不出再见  发表于 2022-4-29 10:26:24  
5#
对于美术来说 太难了想搞点源文件 真难啊 啊
回复 收起回复
使用道具
DiGiToTo  发表于 2022-4-29 11:27:21  
6#
本帖最后由 DiGiToTo 于 2022-4-29 11:28 编辑

破解的话,一般人就洗洗睡吧。那么多加密算法,还有一些别人写的稀奇古怪的东西,各种层叠加密...不是专业的人,真的抓瞎。说不定等你破解了,别人也免费放出来了。
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表