StegSolve使用和LSB隐写
之前就了解过LSB隐写,并且知道怎么得到flag,但是一直都好奇到底lsb隐写的原理是什么,就自学了一下。
预备小知识
我们知道RGB分别是红绿蓝,但他们的值代表的实际上是亮度。
R的数字越大,则代表红色亮度越高;R的数字越小,则代表红色亮度越低。G,B同理。
R的亮度各有256个级别,G,B同理。即从0到255,合计为256个。从数字0到255的逐渐增高,我们人眼观察到的就是亮度越来越大,红色、绿色或蓝色越来越亮。
256是2的8次方,所以我们可以根据RGB分别得到三个八位二进制数值,每个数值的每个位数可以看做是一个通道,反正二进制只有1和0,我们可以理解成通过和不通过,这样,每个颜色就有八个通道,分别对应不同的八位。
如果把RGB表示的数值分别转化为16进制组合在一起,R在前,G在中,B在后,同时以”#“开头,我们称之为十六进制颜色码。很容易知道颜色码#ff0000是红色,#000是黑色,#ffffff是白色等等。
此外,Alpha是透明度,我们用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域,alpha的值为0就是全透明,alpha 的值为 255 则表示不透明。
StegStove
(我们以新生平台的ikun题目为例)
stegsolve是一个常用的图片分析工具,在这里我们使用stegsolve打开ikun图片:
在这个界面里,最下面的俩按钮可以切换不同的颜色通道(0-7):
这里我们切换到了红色通道1,如果这一位上对应的二进制为1,则表示为白,0则表示为黑。
其他还有很多种通道,左上角都会给通道标识,自己可以试一试。
Analyse
在工具栏的Analyse页有几个功能:
File Format:显示图片的具体信息,有时候有些图片隐写的flag会藏在这里。
Data Extract:数据的提取。
Steregram Solve:左右控制偏移,可以放张图片试一下。
Frame Browser:帧浏览器 ,主要是对GIF之类的动图进行分解,把动图一帧帧的放。
Image Combiner:拼图,把两张图片重叠在一起。
Data Extract
我们在这里只重点研究一下Data Extract功能:
左边是选择颜色通道,包括RGB和Alpha分别八个通道。
右半部分:
Extra By(额外的):分为row(行)和column(纵)
这个功能区分了我们是横向提取数据还是纵向提取数据,
在位图里,每个像素用R,G,B三个分量表示,我们可以把一张图片看作是一个矩阵,矩阵的每个单位表示颜色数值:(0~255,0~255,0~255)
Bit Order(位顺序):MSB是一串数据的最高位,LSB是一串数据的最低位。
Bit Plane Order(位平面的顺序):一般图片是24位,RGB分别8位,这里可以选择RGB的顺序,暂时用不到。
LSB隐写
LSB隐写就是修改RGB颜色分量的最低二进制位也就是最低有效位(LSB),而人类的眼睛不会注意到这前后的变化。
为了得到隐藏的最低位数据,我们可以选择RGB的第0位(最低位),然后preview查看,得到flag,这是最简单的LSB隐写: