插入隐写:利用文件格式的无关数据和空白区域,放置重要的数据不会改变文件的原始数据及打开的方式,只添加的隐写的内容。
替换隐写:替换的经典例子就是LSB替换的方法,把每个字节最低有效位变换不改变源文件的大小,但是源文件发生了改变。
补充:
<<<<<<<<——————
LSB算法的基本原理:对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行一定的压缩,所以LSB算法对这些操作很敏感。因此LSB算法最初是用于脆弱性水印的。
LSB算法的基本步骤:
1 将原始载体图像的空域像素值由十进制转换成二进制;
2 用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;
3 将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。
——————>>>>>>>>
在图片的末尾插入特殊的字符:当然这种类型的隐写最简单也最容易发现,一般配合会配合编码的方法来增加难度。
在图片中间插入特殊的字符:这类隐写一般以JPG格式的图片为载体,先认识JPG格式图片组成:标记码和压缩数据。标记码高字节固定为0xFF,标记码之间有冗余字节,意味着如果在标记码之间插入重要数据,不会影响图片的正常打开。
SOI:FF D8 //图片起始
APPO:0xFF E0 //标记号
APP0 SIZE:1D 23 //当前标记的长度
VERSUON: //版本号
ATTRIBUTION://长度、DPI等信息
DQT:0xFFDB //Define Quantization Table 定义量化表
SOF0:0xFFC0 //Start of Frame 帧图像开始
DHT:0xFFC4 //Difine Huffman Table ,定义哈夫曼表
SOS:0xFFDA //start of Scan ,扫描开始12字节
压缩数据
EOI:FF D9 //图片结束
3、压缩包的隐写
命令:windows cmd中的命令:copy /b 图片名.图片的格式 + 压缩包名.压缩包的格式 生成的图片名.图片格式
如:copy /b 1.jpg+2.zip 3.jpg
解图片中的压缩包的方法:
1)、将图片的格式改为压缩包的格式,解压缩包就行了。
2)、使用winhex打开图片,找到压缩包的16进制位置选中提取出来保存为压缩包的格式解压缩包就行了。
3)、使用binwalk识别文件的结构(命令:binwalk 图片名.图片格式),formost将图片分离开输出到新的文件夹中去。(命令:formost 图片名.图片格式 -o 文件夹的名字)
4)、如果使用binwalk不能识别出来,那就是格式不完整只能是手动的使用winhex打开图片,由常见的文件格式分析出来,添加上完整的文件格式,再使用binwalk识别,formost分离。
命令:windows cmd中的命令:copy /b 图片名.图片的格式 + 图片名.图片的格式 生成的图片名.图片格式
如:copy /b 1.jpg+2.jpg 3.jpg
原文:https://www.cnblogs.com/touch-prc/p/12794113.html