MISC:图片隐写的破解方法.
Misc即杂项,是信息隐藏又称信息伪装,就是通过减少载体的某种冗余,如空间冗余、数据冗余等,来隐藏敏感信息,达到某种特殊的目的。
信息隐藏打破了传统密码学的思维范畴,从一个全新的视角审视信息安全。与传统的加密相比,信息隐藏的隐蔽性更强,在信息隐藏中,可以把这两项技术结合起来,先将秘密信息进行加密预处理,然后再进行信息隐藏,则秘密信息的保密性和不可觉察性的效果更佳。
目录:
MISC:图片隐写的破解方法.
图片隐写的破解方法:
JPG文件格式.
(1)损坏的文件.
(2)JPG | Exif
(3)JPG | Steghide
(4)JPG | Outguess
(5)JPG | F5
(6)JPG | Jphide(Windows的工具)
PNG 文件格式.
(1)PNG | 图片高度.
(2)PNG | 图片宽度
(3)PNG | LSB
(4)PNG | 盲水印
GIF 文件格式.
(1)GIF | 空间
(2)GIF | 时间
CTF小工具下载整理:CTF小工具下载整理 - 知乎
通过观察二进制中隐含的文件头信息来判断图片中附加的文件类型,常见的文件头、文件尾分别如下:
◆ JPEG (jpg): 文件头,FF D8 FF; 文件尾,FF D9
◆ PNG (png) : 文件头,89 50 4E 47; 文件尾,AE 42 60 82
◆ GIF (gif) : 文件头,47 49 46 38; 文件尾,00 3B
◆ ZIP Archive (zip): 文件头,50 4B 03 04; 文件尾,50 4B
◆ RAR Archive (rar) ,文件头: 52 617221
◆ Wave (wav) : 文件头,57 41 5645
◆ AVI (avi) : 文件头,41 56 49 20
◆ MPEG (mpg): 文件头,00 00 01 BA
◆ MPEG (mpg): 文件头,00 00 01 B3
◆ Quicktime (mov) : 文件头,6D 6F 6F76
使用的工具:
图片隐写的破解方法:
JPG文件格式.
◆ JPEG (jpg): 文件头,FF D8 FF; 文件尾,FF D9
标记码+压缩数据:
标记码: 由两个字节构成,第一个字节是固定值OXFF,后一个字节则根据不同意义有不同数值
压缩数据:前两个字节保存整个段的长度,包括这两个字节在内,以及后面所有内容组成
(1)损坏的文件.
(2)JPG | Exif
(3)JPG | Steghide
Steghide 是一个可以将文件隐藏到图片或音频中的工具.
apt install steghide //下载 steghide 工具.
steghide embed -cf 图片文件载体 -ef 待隐藏文件 [-p 密码也可以不设] //隐藏文件
//把 待隐藏文件 隐藏在图片文件载体中.
steghide extract -sf 图片文件载体 [-p 密码也可能不设] //提取文件
//在 图片文件载体 中提取隐藏的文件.
(4)JPG | Outguess
Outguess 也是一个可以将文件隐藏到图片或音频中的工具.
apt install outguess //下载 Outguess 工具.
outguess -k 秘钥 -d 隐藏文件 原始图片 加密后的图片[自己命名] //隐藏文件
outguess -k 秘钥 -r 加密后的图片 输出文件名[自己命名] //提取文件
(5)JPG | F5
(6)JPG | Jphide(Windows的工具)
PNG 文件格式.
◆ PNG (png) : 文件头,89 50 4E 47; 文件尾,AE 42 60 82
PNG文件格式:
PNG文件署名域+标准数据块(+辅助数据块)
(1)PNG | 图片高度.
经常会去更改一张图片的高度或者宽度使得一张图片显示不完整从而达到隐藏信息的目的.
图片正常显示,将图片拖入到 010 Editor 中,出现CRC 报错,说明图片的高度被修改了。可以简单
粗暴地将图片的高度修改为较大值.
(2)PNG | 图片宽度
图片不正常显示,色彩失调,将图片拖入到 010 Editor 中,出现 CRC 报错,说明图片的宽度被修改了
文件宽度不能任意修改,需要根据 HDR 块的 CRC 值爆破得到宽度,否则图片显示错误不能得到 flag.
import os
import binascii
import struct
crcbp = open("5.png", "rb").read()
for i in range(1024):
for j in range(1024):
data = crcbp[12:16] + struct.pack('>i',i) + struct.pack('>i',j) + crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0xcbd6df8a :
print(i,j)
print("hex",hex(i),hex(j))
(3)PNG | LSB
◆ PNG 文件中的图像像素一般是由 RGB 三原色(红绿蓝)组成,每一种颜色占用 8 位LSB 隐写就是修改了
像数中的最低的 1 bit,而人类的眼睛不会注意到这前后的变化,每个像素最多可以携带3比特的信息.
◆ Stegsolve 通过下方的按钮可以观察每个通道的信息,查看各个通道时一定要细心捕捉异常点,抓住 LSB
隐写的蛛丝马迹.
◆ 例如:
通过观察RGB三个通道的最低位发现上面都有模糊的信息,借助 Stegsolve-->Analyse-->
Data Extract可以指定通道进行提取。Preview 可以预览信息,Save Text保存成文本,Save Bin
保存成二进制(保存形式由信息内容决定)
解密过程:打开 StegSolve
(4)PNG | 盲水印
盲水印是利用二维傅里叶变换,给文件添加肉眼无法直接看到的水印数据。
盲水印不仅仅用于图片,也可应用于像音频这种数据流。当出现两张看起来一模一样的图片,可以用盲水印
解密工具试一下
工具下载:
https://gitcode.net/mirrors/chishaxie/blindwatermark?utm_source=csdn_github_accelerator
安装脚本的依赖库:
pip install opencv-python
pip install matplotlib==2.1.1
python3 bwmforpy3.py encode 原图 信息文件 盲水印图片 //合成盲水印
python3 bwmforpy3.py decode 原图 盲水印图片 信息文件 //提取盲水印
GIF 文件格式.
(1)GIF | 空间
由于 GIF 的动态特性,由一的图片构成,所以每一的图片,多图片间的结合,都成了隐藏信息的一种载体
通过 Stegsolve 工具一一分析,加载该 gif 图片 Analyse -> Frame Browser
(2)GIF | 时间
下载 Imagemagick 工具:
apt-get install imagemagick
常用指令:
convert: 转换图像格式和大小,模糊,裁剪,驱除污点,抖动,临近,图片上画图片,加入新
图片生成缩略图等。
identify:描述一个或较多图像文件的格式和特性.
composite:根据一个图片或多个图片组合生成图片.
identify -format "%T \n" 查看的图片 > 保存的数据.
identify -format "%T \n" 3.gif > bgxg.txt
一般只会隐藏二种:摩斯密码和二进制.
然后再用在线解密工具:
http://www.all-tool.cn/Tools/morse/?&rand=f6023065909f54a18ec7c6a3b6ba9e3e
学习链接:3-CTF隐写术基础_哔哩哔哩_bilibili