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


Comments NOTHING