ctf-网络安全技能挑战赛暨自主可控安全共测大赛-misc

本文介绍了一种使用隐写术在图像中隐藏信息的方法。通过分析红、绿、蓝通道的最低有效位,提取Ook编码,并对另一张图片进行异或操作及解析,最终揭示隐藏的黑白图像和信息。

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

1.warmup

下载获得一张bmp图片,放入stegsolve中发现在red plane 0,green plane 0,blue plane 0下图片的开头有一些问题,使用data extract,在LSB下分别选择red 0,green 0,blue 0,在最前方发现Ook编码,Ook编码和brainfuck编码,在https://www.splitbrain.org/services/ook对其进行解码即可。

2.loli

下载获得一张png图片,打开有点像二维码,扫描提示255,猜测这里可能需要对图片的字节与0xff做异或,于是首先对图片做异或

a=open('1.png','rb')
str1=a.read()
a.close()
str2=""
for i in str1:
    str2+=chr(ord(i)^0xff)

b=open('2.png','wb')
b.write(str2)
b.close()

用wenhex打开图片,在文件结尾我们看到了提示"black and write"和png图像的结尾,从而得知在这里应该隐藏了一张png图像, 将图像提取,保存,发现这是一个100*100的图片,打开,发现是一张黑白图片,且被12条白线分为11列,而11*8+12恰好等于100,这是我们想到当黑为0,白为1(或者反过来),即可组成一个8为二进制数,从而转为字符,就可以获得答案

from PIL import Image
im=Image.open("22.png")
width=im.size[0]
height=im.size[1]
im1=im.convert("1")
pix=im1.load()
str1=""
str2=""
for y in xrange(height):
    i=0
    while i<width-1:
        j=i+1
        while j<=i+8:
            if pix[j,y]==0:
                str1+='0'
            elif pix[j,y]==255:
                str1+='1'
            j=j+1
        i=i+9
        str2+=chr(int(str1,2)^0xff)
        str1=""

fi=open("11.txt","wb")
fi.write(str2)
fi.close()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值