杂项题的基本解题思路——2、图片隐写术
2、图片隐写术
图片隐写的常见隐写方法
①firework工具
使用winhex打开文件时会看到头部中包含fireworks的标识 ,通过firework可以找到隐藏图片
使用场景:查看隐写的图片文件
②Exif
Exif按照JPEG的规格在JPEG中插入一些图像/数字相机的信息数据以及缩略图像。可以通过与JPEG兼容
的互联网浏览器/图片浏览器/图像处理等一些软件来查看Exif格式的图像文件,就跟浏览通常的JPEG图像文件一样。
图片右键属性 查看exif或者查看详细信息,在相关选项卡中查找flag等。
谷歌地球(没有关GPS拍照,可以通过谷歌地球访问到)
③Stegsolve
当两张jpg图片外观、大小、像素都基本相同时,可以考虑进行结合分析,即将两个文件按的像素rgb值进行xor(异或)、 add(加)、 sub(减)等操作,
看能否得到有用的信息,stegslove可以方便的进行这些操作。
使用场景:两张图片的信息基本相同
操作:选择file-open打开图片A,接着做下图中的操作。【操作图片是有顺序之差的】
④LSB(最低有效位least significant bit)
lsb替换隐写基本思想是用嵌入的秘密信息取代载体图像的最低比特位,原来的7个高位平面与替代秘密信息的最低位平面合成隐藏信息的新图像
工具:
a. stegsolve.jar
stegsolve.jar压缩包打开和使用方法:https://www.cnblogs.com/ciel-shan/p/12724764.html
b. zsteg(linux环境下)
detect stegano-hidden data in PNG&BMP
在线安装命令:gem install zsteg
命令:zsteg xxx.jpg
c. wbstego4工具(适用文件:.bmp .rle .txt .asc .html .xml .pdf)
解密通过lsb加密的图片
jpg可以转成bmp
画图软件可以很好的进行图片类型的转换
用zsteg也可以:
d. python脚本
将以下脚本放在kali中运行,将目标文件放在脚本同目录下,将脚本中的文件名修改为目标文件名,运行python即可
#coding:utf-8 import PIL.Image def foo(): im=PIL.Image.open('01.bmp') im2=im.copy() pix=im2.load() width,height=im2.size for x in xrange(0,width): for y in xrange(0,height): if pix[x,y]&0x1==0 pix[x,y]=0 else: pix[x,y]=255 im2.show() pass if __name__=='__main__': foo() print 'ok' pass
⑤TweakPNG
tweakpng是一款简单易用的png图像浏览工具,它允许查看和修改一些png图像文件的元信息存储,
使用场景:文件头正常却无法打开文件,利用tweakpng修改crc
操作:用该工具打开有问题的png图片,会提示错误的crc字符串以及正确的crc字符串,然后用16进制编辑器winhex打开搜索错误的crc字符串,然后用正确的替换。
特殊情况:有时候crc没有错误,但是图片的宽度或者高度发生错误,需要通过用python脚本利用crc计算出正确的高度宽度
python脚本代码:
循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校验码,在早期的通信中运用广泛。循环冗余校验码常用于外存储器和计算机同步通信的数据校验。
png文件结构:
就是说一张PNG图片第17个字节起的8个字节就表示了图片的宽度高度信息
⑥bftools
用于解密图片信息
使用场景:在windows的cmd下,对加密过的图片进行解密
格式:bftools.exe decode braincopter 要解密的图片名称 –output 输出文件名
bftools.exe run 上一步输出的文件
⑦silentEye
⑧jpg图像加密解密
i. stegdetect工具探测加密方式
⑨二维码处理(二维码可能被改成彩色、黑白色调换等等)
工具:CQR.exe(或者电脑桌面二维码扫描器)结合Stegsolve工具使用
准备工作:可能需要使用画图对二维码进行反射处理
二维码处理有以下三种情况
点击选择, 右键单击反色