MISC:图片隐写的破解方法.

MISC:图片隐写的破解方法.

Misc即杂项,是信息隐藏又称信息伪装,就是通过减少载体的某种冗余,如空间冗余、数据冗余等,来隐藏敏感信息,达到某种特殊的目的。
信息隐藏打破了传统密码学的思维范畴,从一个全新的视角审视信息安全。与传统的加密相比,信息隐藏的隐蔽性更强,在信息隐藏中,可以把这两项技术结合起来,先将秘密信息进行加密预处理,然后再进行信息隐藏,则秘密信息的保密性和不可觉察性的效果更佳。


目录:

MISC:图片隐写的破解方法.

图片隐写的破解方法:

JPG文件格式.

(1)损坏的文件.

(2)JPG | Exif

(3)JPG | Steghide

(4)JPG | Outguess

(5)JPG | F5

(6)JPG | Jphide

PNG 文件格式.

(1)PNG | 图片高度.

(2)PNG | 图片宽度

(3)PNG | LSB

(4)PNG | 盲水印

GIF 文件格式.

(1)GIF | 空间

(2)GIF | 时间


通过观察二进制中隐含的文件头信息来判断图片中附加的文件类型,常见的文件头、文件尾分别如下:

◆ 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 


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

### 图像术的实现方式与技术原理 图像术的核心在于将秘密信息藏在数字图像中,而不显著改变图像的视觉效果。以下是其实现方式和技术原理: #### 1. **最低有效位(LSB)术** 最低有效位(Least Significant Bit, LSB)术是最常见的图像方法之一。该方法利用了人眼对低比特位的变化不敏感的特点,通过替换像素值的最低几位来嵌入秘密信息[^1]。 具体过程如下: - 将原始图像分解为像素矩阵。 - 提取秘密信息并将其转换为二进制表示。 - 替换目标像素的最低有效位为秘密信息对应的二进制位。 示例代码展示如何使用 MATLAB 实现 LSB 术: ```matlab function stegoImage = embedMessage(image, message) % Convert the image to binary representation imgBinary = dec2bin(double(image), 8); % Prepare the secret message as a bitstream msgBits = reshape(dec2bin(message(:)', 8)', [], 1)'; % Embed the bits into the least significant positions of the image pixels idx = 1; for i = 1:numel(imgBinary) if idx <= numel(msgBits) imgBinary(i, end) = msgBits(idx); idx = idx + 1; else break; end end % Reconstruct the modified image from its binary form stegoImage = uint8(bin2dec(imgBinary)); end ``` #### 2. **基于冗余信息的技术** 图像本身通常含有大量冗余信息,这些冗余可以通过调整某些参数来进行信息藏。例如,修改颜色分量的小数部分或亮度级别,从而嵌入秘密数据[^3]。 #### 3. **不可感知术** 为了提高安全性,现代术更倾向于采用不可感知的方式,即即使借助专业工具也很难发现图像中的异常。这通常涉及复杂的算法设计和统计学分析,以确保嵌入后的图像保持自然特性[^2]。 #### 4. **应用领域扩展** 除了传统的保密通信外,图片还广泛应用于版权保护、数字水印以及安全备份等方面。例如,在 Python 中也可以轻松实现类似的功能[^5]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半个西瓜.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值