上一个帖子,介绍了“用图片传播
”。今天,来聊一下其中的技术原理。如果你对IT技术没啥兴趣,可以略过本文。
★图片隐藏信息的用途
先来说说信息隐藏的目的。俺大致总结了一下,信息隐藏可以用于如下几种场合。
(涉及敏感内容,此处省略191字)
◇传递加密信息
最后,图片还可以用来隐藏加密的信息。关于加密的用途及重要性,俺在“文件加密的扫盲介绍
”中,已经强调过加密性。用图片来隐藏加密信息,除了具有加密的效果,还具有很大的欺骗性——因为外人难以知道一张图片是否包含有加密信息。
★准备工作——先压缩
下面,俺会介绍几种不同的隐藏方式。在动手之前,先说一下准备工作——把要隐藏得文件先用压缩工具(比如 7zip 或 WinRAR)压缩一下。
压缩有如下几个好处:
优点1
如果你要隐藏的文件是文本格式或者 Office 格式,它内部的内容是明码的。如果里面包含敏感词,在通过网络传输时,会遭遇敏感词过滤。而压缩后的文件,原有的内容已经变得面目全非,可以规律敏感词过滤。
优点2
压缩之后,体积变小,有利于增加隐蔽性。因此,应尽量使用"最大压缩"的选项。
优点3
对于后面介绍的2种方法(尾部追加法、内容覆盖法),如果你隐藏的文件是压缩格式的,到时候提取信息会很简便——直接用压缩工具来解压,即可。
★尾部追加法
先介绍最简单的一种方法。
◇技术原理
顾名思义,"尾部追加法"就是把要隐藏的文件追加到图片尾部。这种方法不会破坏图片原有的任何数据,因此,图片看起来和原来一模一样。
◇隐藏信息的步骤
隐藏的过程很简单,用 Windows 内置的文件拷贝命令,即可完成。假设你的图片文件叫 A.JPG,需要隐藏的压缩文件叫 B.ZIP,那你只需要执行如下命令,就可以把两个文件合并成一个新文件。
copy /b A.JPG + B.zip C.JPG
执行完如上命令,即可得到一个新的图片文件 C.JPG。这个图片文件的大小是前两者的总和。你可以用各种看图工具来打开 C.JPG,不会看到什么异常。
◇提取信息的步骤
由于你追加的是压缩文件,提取的时候就简单了——只要用压缩工具打开 C.JPG,就可以直接看到压缩包里面的内容了。
◇优点
1、
制作简单,一条 copy 命令就可以搞定;如果隐藏的是压缩文件,提取的过程也很简单。
2、
用看图工具看生成的新文件,还是跟原来一样。
3、
隐藏的文件,大小不受限制。比如,你可以在一张100K的图片尾部,追加200K的隐藏数据。
◇缺点
1、
由于隐藏的文件附加在尾部。当你把这个新的图片文件上传到某些贴图的网站,(假如这个网站对图片格式的校验比较严格)它有可能会发现图片尾部有多余的数据,并且会把这个多余的数据丢弃掉。
2、
追加后,图片的文件尺寸变大了。如果你追加的文件太大,容易被发现破绽。
比方说,一张640*480的 JPEG 图片,大小竟然有好几兆,对于有经验的IT技术人员,一下子就会觉得有猫腻。
★内容覆盖法
说完尾部追加的办法,再来介绍内容覆盖的办法。
◇技术原理
通常,图片文件都有包含2部分:文件头和数据区。而"内容覆盖法",就是把要隐藏的文件,直接覆盖
到图片文件的数据区
的尾部
。比方说,某图片有100K,其中文件头占1K,那么,数据区就是99K。也就是说,最多只能隐藏99K的文件。
切记:覆盖的时候,千万不可破坏文件头
。文件头一旦破坏,这个图片文件就不再是一个合法的图片文件了。
使用这种方法,对图片文件的格式,是有讲究的——最好用 24位色的 BMP 格式
。一来,BMP 格式本身比较简单,数据区随便覆盖,问题不大;二来,24位色的 BMP 相对其它的格式 BMP,文件尺寸更大,可以隐藏更多内容。
◇隐藏信息的步骤
用这个招数来隐藏信息,稍微有点麻烦,需要借助一些小工具。对于这种简单的活计,俺通常用Python脚本来搞定。以下是俺写的一个简单 Python 脚本。你的电脑中如果有Python环境,可以直接拿这个脚本去用。
事先声明:如下代码没有严格计算 BMP 的文件头尺寸,俺只是大致预留了 1024 字节,感觉应该够了。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
import sys
def embed(container_file, data_file, output_file) :
container = open(container_file, "rb").read()
data = open(data_file, "rb").read()
if len(data)+1024 >= len(container) :
print "Not enough space to save", data_file
else :
f = open(output_file, "wb")
f.write(container[ : len(container)-len(data)])
f.write(data)
f.close()
if "__main__" == __name__ :
try :
if len(sys.argv) == 4 :
embed(sys.argv[1], sys.argv[2], sys.argv[3])
else :
print "Usage:"
print sys.argv[0], "container data output"
except Exception,err :
print err
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
上述Python的代码,很好懂,有编程基础的同学,10分钟之内就可以用自己熟悉的语言重写一个类似的。
另外,没学过 Python 的同学,如果有兴趣,可以看看俺之前写的系列帖子——为什么俺推荐Python?
◇提取信息的步骤
和前一种方法类似。如果你覆盖的是压缩文件,提取的时候,可以用压缩工具打开图片,就可以直接看到压缩包里面的内容了。
◇优点
1、
图片的文件尺寸没变。
2、
虽然隐藏文件覆盖到数据区,破环了原图像的内容。但是从格式上来讲,该图片文件的格式还是合法的。
因此,你可以把这种图片上传到各种贴图的网站,技术上不会出问题。
3、
如果隐藏的是压缩文件,提取的过程很简单。
◇缺点
1、
由于隐藏的文件覆盖了数据区,因此,图片在显示的时候,会有一块区域变成灰蒙蒙的。
2、
隐藏文件的大小,有一定的限制——不能大于图片数据区的尺寸。
3、
对图片格式有一定要求。此处再啰嗦一下,建议用 24位色的 BMP 格式。
★隐写法
最后,来介绍一种最复杂,但是也最隐蔽的方法——隐写术。
◇技术原理
此方法会涉及较深奥的技术领域,俺也就知道个大概。通俗地说:如果把图片的某个像素的颜色,进行微小的调整,肉眼是看不出来的;因此,专门的软件,利用某些高深的算法,就可以在变化的像素中隐藏信息。
有兴趣的同学,可以看"这里
"的介绍;懂洋文的,还可以看更详细的介绍,在"这里
"。
◇隐藏息/提取信息的步骤
使用这种方法,你需要用专门的工具来进行信息的隐藏和提取。在进行隐藏时,你除了指定图片文件和被隐藏的文件,还需要设置一个密码。隐写工具会把你的隐藏文件先加密,然后再进行隐写;提取的时候,需要用同一款隐写工具进行提取,并输入同样的密码,才能提取出来。
假如图片文件落入攻击者手中,他必须同时知道2个信息(你用哪款隐写工具,你隐写时设置的密码),才有可能破解出隐含的信息。因此,安全性很高。
◇相关工具
下面介绍几款工具,大伙儿可以根据自己喜好,挑选一个试试看。
名称
|
官网
|
界面
|
类型
|
Silent Eye |
这里
|
图形界面 |
开源软件 |
Steg Hide |
这里
|
命令行界面 |
开源软件 |
Ultima Steganography |
这里
|
图形界面 |
商业软件 |
◇优点
1、
隐蔽性非常好。图片看上去几乎没变(其实是有极其轻微的变化,但是肉眼看不出)。并且,图片文件的大小也没变化。
即使是专业人士,也很难判断一张图片是否包含了隐写术的数据。
◇缺点
1、
隐藏信息和提取信息比较麻烦,需要使用专门的工具。
2、
只能隐藏较少的信息。
此方法能隐藏的信息量,和图片面积有关,和图片格式无关。比如一张1600*1200尺寸的,无论哪种格式,大约只能隐藏几KB
的数据。
★结尾
刚才介绍的几个招数,除了可以用于图片文件,也可以用在其它的多媒体文件中(比如:音频文件、视频文件)。有兴趣的网友,可以自个儿研究一下。
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想
和本文原始地址:
http://program-think.blogspot.com/2011/06/use-image-hide-information.html
分享到:
相关推荐
基于Python的图像信息隐藏技术的实现 python;django;mysql; 本次就是利用python技术,结合LSB等算法内容,来搭建一款图像隐藏的软件,通过该软件实现信息的隐藏传输功能。 此次设计的图像隐藏需要具备以下的...
毕业设计:Python图像信息隐藏技术的实现(源码 + 数据库 + 说明文档) 第2章 图像隐写及隐写分析综述 6 2.1 现代隐写的发展方向 6 2.2信息隐藏技术的基本概念 6 2.3信息隐藏的基本模型 7 2.4系统开发工具介绍 7 ...
在信息安全领域,隐写术是一种隐藏秘密信息的技术,其中最常见的一种方法是通过将信息嵌入到图像中,而外观上几乎无法察觉。图片LSB(Least Significant Bit)隐写就是这样一种方法,它利用了图像中像素的最低有效位...
通过使用信息隐藏技术,可以保护网络上的信息不被非法获取,提高网络信息的安全性。 6. 密码学在信息隐藏技术中的应用:密码学是信息隐藏技术的基础。通过使用密码学技术,可以实现信息的加密、解密和隐藏,保护...
例如,在电子货币系统中,可以使用信息隐藏技术来验证交易的合法性;在网络监控中,可以隐藏追踪信号,用于检测和预防网络犯罪。 至于学习资源,"信息隐藏技术"这个课件文件可能包含了关于信息隐藏的理论基础、主流...
《信息隐藏技术实验教程》是王丽娜、郭迟、叶登攀等专家共同编著的一本关于信息隐藏领域的实践性教材。信息隐藏技术是一种在数据中嵌入秘密信息的技术,通常用于版权保护、数据安全和通信保密等领域。源代码是这本书...
信息隐藏技术是信息安全领域的重要组成部分,它涉及到将秘密信息巧妙地隐藏在公开可见的信息之中,以防止未经授权的访问和窃取。与信息加密技术不同,信息隐藏并不专注于保护信息的内容,而是保护信息的存在本身,...
图片隐藏不仅涉及图像处理,还涉及到信息安全领域。这种技术可以用于保护隐私、版权验证,甚至在某些情况下用于非法活动,如秘密传播信息。在数字媒体广泛使用的今天,理解如何隐藏和检测这些隐藏信息变得越来越重要...
在本项目"基于C++的JPEG图片信息隐藏及提取"中,我们主要关注的是数字图像处理领域中的隐写术(Steganography),特别是在JPEG图片格式中的应用。隐写术是一种技术,它允许用户在文件中秘密地嵌入信息,而不会引起...
信息隐藏技术是一种新兴的信息安全技术,其核心思想在于利用人类感官对于某些特定信号的不敏感性以及多媒体数据固有的冗余特性,将秘密信息嵌入到一个公开的数据载体(如图像、音频或视频)之中,使得这些秘密信息不...
在这个项目中,我们主要探讨的是如何用C++实现LSB算法,用于在PNG、GIF、BMP格式的图片中隐藏信息,并且可以将这些隐藏的信息读取出来。同时,该程序还能支持将jpg、png、gif格式的图片以及txt、exe文件等不同类型的...
5. **应用场景**:除了上述的安全性和隐私考虑,隐藏文件在图片中的技术也有其实际用途,如数字版权保护、机密信息的传输等。 总之,隐藏文件在图片中是一种结合了技术与策略的方法,它既涉及到了数据存储的创新,...
采用基于LSB的随机图像隐藏技术实现将一幅图像(目标图像)隐藏到另一幅图像(载体图像)中。包含目标图像yctx.bmp,载体图像Miss.bmp,图像隐藏代码randlsbimghide.m文件,图像读取代码randlsbimgget.m文件,随机位...
在本文中,我们将深入探讨如何使用Visual C++ (VC) 实现BMP图像的信息隐藏技术。这是一种数字水印技术,通常用于保护版权、隐藏秘密信息或进行数据传输。信息隐藏的基本原理是将秘密数据嵌入到载体文件中,如图片、...
总之,"C++图片信息隐写(可运行)"项目提供了一个实践信息隐藏技术的平台,通过C++编程实现图片隐写,这有助于开发者和信息安全专业人士增强对隐写术的理解,同时也为他们在实际应用中创建自定义的隐藏信息解决方案...
在MATLAB环境中,开发了一个图形用户界面(GUI)来实现LSB信息隐藏技术,该GUI不仅支持隐藏图片和文字,还具有图像置乱的功能。下面我们将详细探讨这些知识点。 1. LSB信息隐藏原理: LSB信息隐藏的基本思想是利用...
图片信息隐藏技术是一种将数据巧妙地嵌入到图像中的方法,使得肉眼无法察觉到隐藏信息的存在,同时又能保证原始图像的质量。这种技术在信息安全、版权保护、秘密通信等领域有广泛应用。尾坠法(Steganography)是...
理解并掌握LSB算法不仅可以增强数字媒体的安全性,还可以作为进一步研究更复杂信息隐藏技术的基础,例如JPEG图像中的DCT域隐藏、视频帧的运动补偿隐藏等。 在实际应用中,需要注意的是,尽管LSB算法相对简单,但其...
LSB(Least Significant Bit,最低有效位)算法是一种在数字媒体中嵌入秘密信息的技术,常用于信息隐藏和数字水印...不过,实际应用中,可能需要结合其他更高级的隐藏技术和加密手段,以增强隐藏信息的安全性和鲁棒性。