首页
社区
课程
招聘
[原创]基于BMP图像的信息隐藏
发表于: 2007-7-13 15:11 14555

[原创]基于BMP图像的信息隐藏

2007-7-13 15:11
14555

原理:
  关于BMP位图的资料,网上很多,可以自己搜索。对于BMP格式的图象,其前54个字节未文件头信息,从第55个字节开始到结束的所有数据,都是图像颜色数据。如果仅仅修改图像颜色数据而不修改文件头信息,则bmp图像大小不变且可以正常使用。当然,为了控制图像的质量,对于数据的植入方式,我们需要稍加斟酌。一个bmp图像要隐藏我们指定的信息,储存空间必不可少。为了保证信息植入前后图像的质量不发生明显的变化,我们只有把信息写到bmp图像颜色数据的每个字节的低位上。这样,每个字节的改变量不超过0Fh,对图像品质的影响非常小,用肉眼几乎分辨不出来。在源码包中有对比图,大家可以亲自对比验证。
  原理即 :用原来bmp图像颜色数据的相邻两个字节的低位来存放隐藏信息的一个字节的内容。

如隐藏信息的某个字节数据位为 3E ,bmp图像颜色数据两相邻字节的内容为:5F 27 ,处理后该相邻字节的内容变为53 2E。这样处理,一张mbp图像可以存放其自身长度2分之1大小的信息,效果不错。

  源码在附件中,自行下载。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (20)
雪    币: 190
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
此乃匪夷所思之举,真高见也~
2007-7-13 15:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没做到沙发   
顶一把把   呵呵
2007-7-13 17:12
0
雪    币: 290
活跃值: (635)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
隐藏信息后图片不能浏览!
2007-7-13 17:43
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5


WORD biBitCount// 每个像素所需的位数,必须是1(双色),
// 4(16色),8(256色)或24(真彩色)之一
DWORD biCompression; // 位图压缩类型,必须是 0(不压缩),
// 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一


[1]不知道程序有没有考虑到在像素所占位数为1/4/8时,用半个字节隐藏数据是不合适的;
[2]如果像素值采用了压缩,BI_RLE8/4,还能直接修改低半字节吗?
2007-7-13 17:46
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不光bmp可以这样,所有的图像都可以按照这个思路进行。
2007-7-13 17:49
0
雪    币: 261
活跃值: (162)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
7
24(真彩色)bmp,另外源码中有一个地方需要修改,就是就是(1/2)图片文件大小和被隐藏信息的大小差值为:头文件大小(54)+标志大小(20)+记录值(8)=82
2007-7-13 17:50
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
严格的说:24位未压缩BMP图
2007-7-13 18:00
0
雪    币: 1919
活跃值: (901)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
9
收藏+支持~~
2007-7-16 12:12
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
很早就有的方法。直接这样修改BMP好像是没实际意义的。缺点跟LSB一样,应该是更脆弱,无实用意义。
我们实验时是对图像进行小波变换后对低频参数进行类似修改的(当然不是相邻,否则没意义)
2007-7-16 18:33
0
雪    币: 134
活跃值: (84)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
高,真高!!!
2007-7-16 20:19
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习了!怎么看不到楼主研究雨过天晴了?\
期待楼主能做个最新版的补丁!
2007-7-19 18:31
0
雪    币: 223
能力值: (RANK:130 )
在线值:
发帖
回帖
粉丝
13
楼主的方法我以前也尝试过,当时就觉得这个方法还是有一定的缺陷。
例如:
隐藏信息的长度必须放在一个相对固定的位置,非常容易暴露。
被隐藏的信息不能太大,大约只能是bmp文件大小的1/3。

要是能在JPEG、MP3或者AVI格式当中隐藏信息可能就更好了。
2007-7-20 11:56
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
14
再深入详细说一下,非常愿意拜读
2007-7-21 14:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
经典...N久前就有人研究了..
2007-7-28 07:23
0
雪    币: 214
活跃值: (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
似乎应该变换后修改不敏感部分......
对于 低色深 的图像,楼主用的那幅例图,将楼主的文本代码一小部分融合之后失真还是比较明显的:

//论坛不能上传bmp,将融合过的bmp转化gif上传


如果坚持用这种方法,或许可以把游程编码先解压,然后将低色深转化为高色深(再RLE回去).
只不过体积会大点...

仍然表示对楼主的支持!
上传的附件:
2007-7-29 18:00
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
是要修改不敏感部分。
用于隐藏信息的部分应该是符合以下条件
1)稍微改动不会导致图像有视觉上的太大变化
2)包含有图像的主要信息(比如说图像的轮廓就是主要信息之一)

否则,图像经过一些常见的简单处理(如:格式转换),信息就会被严重破坏
2007-7-29 21:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
顶一下,要是隐藏信息能加密就好了!
2007-8-2 00:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
这些方法 是和以前那些 在图片中隐藏信息 一样吗? 好象如出一辄。
2007-8-2 00:19
0
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
20
这是数字水印的一种做法。呵呵。
2007-8-2 12:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
果然是高见,SO GOOD
2007-8-3 20:02
0
游客
登录 | 注册 方可回帖
返回
//