得到一个乱码的图片,查看信息,联系“red_green”
目录
(1)stegsolve图层中只有red/green,与题目暗合
前言
掌握互补转为01二进制的思想、zsteg提取隐写文件的操作方法。
一、题目重述
二、解题思路
1.套路来一遍
- 属性(一般都没有)
- 010editor查看是不是有特殊信息
- binwalk/foremost查看是否有隐藏信息
- stegsolve查看图层/LSB隐写
- zsteg方便地再次LSB隐写查看
2.过程中注意到以下两点:
(1)stegsolve图层中只有red/green,与题目暗合
提取出来的两个通道的图片作异或后为空白图——即图片像素只有单红单绿两色
(2)zsteg查看隐写信息发现隐写img
3.对应解题策略
法一
对于发现的(1),红和绿构成了01串信息,意味着可以转化为二进制文件,然后进一步操作。
//代码摘自【愚公移山】博客
from PIL import Image
import os
import bitstring
image_name = 'red_green.png'
current_path = os.path.dirname(__file__)
im = Image.open(os.path.join(current_path,image_name))
image_width = im.size[0]
image_height = im.size[1]
# load pixel
pim = im.load()
bin_result = ''
for row in range(image_height):
for col in range(image_width):
if pim[col,row][0] == 255:
bin_result += '1'
else:
bin_result += '0'
with open(os.path.join(current_path,'result.jpg'),'wb') as f:
f.write(bitstring.BitArray(bin=bin_result).bytes)
法二
或者stegsolve提取LSB隐写信息为二进制文件
法三
对于(2),进一步采用zsteg提取文件命令
关于zsteg的使用方法(摘自):
查看帮助
zsteg -h
查看LSB信息
zsteg pcat.png
检测zlib
# -b的位数是从1开始的
zsteg zlib.bmp -b 1 -o xy -v
显示细节
zsteg pcat.png -v
尝试所有已知的组合
zsteg pcat.png -a
导出内容
zsteg -E "b1,bgr,lsb,xy" pcat.png > p.exe
4.flag
总结
非此即彼——二进制的思想,zsteg工具的使用,进一步融会贯通