LSB隐写

shr1mp 发布于 2026-02-01 129 次阅读


LSB隐写的原理

一个标准24位真彩色像素确实由3个颜色通道(R、G、B)组成,每个通道用8位(1字节)存储,所以一个像素总共占用24位(3字节)

在png图片的存储中,每个颜色表示需要有8bit,即有256种颜色,一共包含256的三次方个颜色,即16777216中颜色,人类的眼睛可以区分约1,000万种不同的颜色,剩下无法区分的颜色就有6777216。

每个像素点的颜色可以用十进制0~255的数值表示,那么上图中的RGB(218,150,149)表示成二进制为

LSB隐写就是修改RGB颜色分量的最低二进制位也就是最低有效位(LSB),而人类的眼睛不会注意到这前后的变化,我们仅对RGB中的最低位进行修改,如当前像素位点最后一位修改成1,1,0.则上述RGB变成218->219

工具

StegSolve:

不同文件的RGB储存顺序:
BMP文件:通常按BGR顺序储存(蓝绿红),与内存顺序可能不同
PNG文件:支持多种颜色模式,但24位RGB通常按RGB顺序
JPEG文件:使用YCbCr色彩空间,内部存储方式更复杂
32位RGBA:增加Alpha通道(透明度),占4字节:R+G+B+A
16位RGB:每个通道5-6位,压缩存储
8位索引色:不直接存RGB值,而是存调色板索引

关于工具使用:

关于ROW和COLUMN

row(行优先)​按行顺序遍历像素:先从左到右处理第一行的所有像素,再处理第二行,以此类推(类似"Z"字形扫描)大多数标准隐写工具默认采用行优先,符合图像存储的自然顺序
column(列优先)​按列顺序遍历像素:先从上到下处理第一列的所有像素,再处理第二列,以此类推出题人可能故意使用列优先增加难度,或用于特定编码需求
例如:
(1,1) (1,2)
(2,1) (2,2)
行优先遍历:顺序为 (1,1) → (1,2) → (2,1) → (2,2)
列优先遍历:顺序为 (1,1) → (2,1) → (1,2) → (2,2)

关于MSB和LSB

MSB​最高有效位二进制数的最左边一位最大(2^(n-1))改变MSB会使数值发生巨大变化
LSB​最低有效位二进制数的最右边一位最小(2^0=1)改变LSB只使数值±1

例子:

例如这个图片,只能看见黑白,但是却显示有别的颜色,而且他们都是127和255组成。

255--->11111111
127--->01111111

说明是最高有效位的隐写,选择通道7

这个人很菜,但是在学
最后更新于 2026-02-01