世安杯-LSB隐写-png

本文详细介绍使用Stegsolve及cloacked-pixel工具分析并提取LSB隐写术加密的图片中的隐藏信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题是这样的,给了一张图片:皮卡丘。一开始不知道怎么做,就一直在那里纠结。

好吧,接下来就介绍一下整个过程吧,我写的是最最具体的,不用你去思考下一步跟上一步是什么关系,
照着做就可以做出来,至于如何理解大家就上网找资料咯。
首先拿到一张图:
这里写图片描述
先分析一下:
对于LSB隐写,可使用Stegsolve辅助分析
1. 打开加密图片后,选择Analyse-DataExtract
2. Bit Planes 选中Reg、Green、Blue的第0位
3. Bit Order选中LSBFirst
4. Bit Plane Order选中RGB
可以看到加密形式的payload,如图
这里写图片描述

由此我们就大概可以判断一下是lsb加密。这里我们使用一个github上一个工具来处理-cloacked-pixel(具体用法见https://github.com/cyberinc/cloacked-pixel)。我是在kali下进行测试的。先将文件解压,并将png文件放进去,在命令行下进入到该文件夹。
这里写图片描述
然后使用命令python lsb.py extract 1.png 1.txt 123456可以得到隐写的文件1.txt。
ps:extract指的是提取 1.png指的是导入文件名
1.txt指的是导出文件名 123456指的是密码(此处根据提示弱密码猜测)
这里写图片描述

最后打开1.txt即可得到flag

没有积分的私聊我 看到消息百分百发给你 1、算法核心: 1、读取图片A,获得其RGB三个通道数据并转换成三个矩阵a1,a2,a3。 2、读取文件B,将其转换成比特流b。 3、遍历b,得到比特b1,b2,b3,b4,b5,b6等等,将b1代替a1第一个元素的最低位,将b2代替a2第一个元素的最低位,将b3代替a3第一个元素的最低位,将b4代替a1第二个元素的最低位,以此类推。 2、具体实现: 1、: 1、使用java ImageIO读取图片,获取其RGB通道信息。 2、使用java NIO读取被嵌入的文件,将其转换为byte数组,需要特别指出的是原生方法得到是byte类型的数组,但是算法实现需要更加精细的操作,所以还需要对得到的byte数组进行进一步的转换封装,将其转换成形如10101的数组。例如,读取文件得到byte数组的第一个元素为63,需将63转换为00111111数组。并且保存好文件的长度。 3、按照算法,遍历形如10101的数组 1、如果遍历到的值为0,将矩阵对应的矩阵元素与0xfe进行与运算,将最低位置为0 2、如果遍历到的值为1,将矩阵对应的矩阵元素与0x01进行或运算,将最低位置为1 4、将步骤3得到的经过经过的矩阵为一张新的图片。 3、读取 1、使用java ImageIO读取图片,获取其RGB通道信息。 2、使用步骤3得到的文件长度,遍历图片的像素矩阵,需要特别指出的是因为后续步骤还需要进行进一步的转化,所以这一步是将得到的“100100......”序列每八位封装为一个数组,最终得到一些数组集合,每个数组包含八位二进制序列。 3、将步骤2得到的数组进行转换,例如00111111应该转换为byte类型数值为63的数字,10111111转换为-63。这一步会得到一个byte类型的数组。 4、将步骤3得到的byte类型数组入文件,需要指出的是入的文件形式应该和模块步骤二中读入的文件形式一致。 3、程序使用方法 1、装Java8 2、使用命令行进入jar文件所在目录下,使用命令 java -jar 2016115130.jar 3、装提示输入嵌入和被嵌入的文件名字,注意路径问题
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值