★图片隐藏信息的用途
先来说说信息隐藏的目的。俺大致总结了一下,信息隐藏可以用于如下几种场合。
◇规避敏感词过滤
所谓的“敏感词过滤”,常翻墙的同学,应该都很熟悉了。用图片来隐藏信息,可以规避 GFW 的敏感词过滤。
◇规避肉眼审查
俺在上一个帖子介绍的方法(把翻墙工具嵌入图片中),主要是为了躲开网站管理人员的人工审查。国内的很多网站,对于上传的图片,都会进行人工审查。如果能通过技术手段把信息隐藏在图片中,而图片本身又看不出什么异样,人工审核就看不出来。
◇传递加密信息
最后,图片还可以用来隐藏加密的信息。关于加密的用途及重要性,俺在《文件加密的扫盲介绍》中,已经强调过加密性。用图片来隐藏加密信息,除了具有加密的效果,还具有很大的欺骗性——因为外人难以知道一张图片是否包含有加密信息。
★准备工作——先压缩
下面,俺会介绍几种不同的隐藏方式。在动手之前,先说一下准备工作——把要隐藏得文件先用压缩工具(比如 7zip 或 WinRAR)压缩一下。
压缩有如下几个好处:
◇优点1
如果你要隐藏的文件是文本格式或者 Office 格式,它内部的内容是明码的。如果里面包含敏感词,在通过网络传输时,会遭遇 GFW 的敏感词过滤(技术术语叫“深度包检测”)。而压缩后的文件,原有的内容已经变得面目全非,可以规律敏感词过滤。
◇优点2
压缩之后,体积变小,有利于增加隐蔽性。因此,应尽量使用“最大压缩”的选项。
◇优点3
对于后面介绍的2种方法(尾部追加法、内容覆盖法),如果你隐藏的文件是压缩格式的,到时候提取信息会很简便——直接用压缩工具来解压,即可。
★尾部追加法
先介绍最简单的一种方法。
◇技术原理
顾名思义,“尾部追加法”就是把要隐藏的文件追加到图片尾部。这种方法不会破坏图片原有的任何数据,因此,图片看起来和原来一模一样。
◇隐藏信息的步骤
隐藏的过程很简单,用 Windows 内置的文件拷贝命令,即可完成。假设你的图片文件叫
A.jpg
,需要隐藏的压缩文件叫 B.zip
,那你只需要执行如下命令,就可以把两个文件合并成一个新文件。copy /b A.jpg + B.zip C.jpg(注:上述命令中的
/b
选项表示:以【二进制】方式合并)该命令执行之后,即可得到一个新的图片文件
C.jpg
。这个图片文件的大小是前两者的总和。你可以用各种看图工具来打开 C.jpg
,【不会】发现啥异常。◇提取信息的步骤
由于你追加的是压缩文件,提取的时候就简单了——只要用压缩工具打开
C.jpg
,就可以直接看到压缩包里面的内容了。◇优点
1. 制作简单,只用
copy
命令就搞定啦;如果隐藏的是压缩文件,提取的过程也很简单。2. 用看图工具看生成的新文件,还是跟原来一样。
3. 隐藏的文件,大小不受限制。比如,你可以在一张 100KB 的图片尾部,追加 200KB 的隐藏数据。
◇缺点
1. 由于隐藏的文件附加在尾部。当你把这个新的图片文件上传到某些贴图的网站,(假如这个网站对图片格式的校验比较严格)它有可能会发现图片尾部有多余的数据,并且会把这个多余的数据丢弃掉。
2. 追加后,图片的文件尺寸变大了。如果你追加的文件太大,容易被发现破绽(比方说,一张 640*480 的 jpeg 图片,大小竟然有好几兆,对于有经验的 IT 技术人员,一下子就会觉得有猫腻)
★内容覆盖法
说完尾部追加的办法,再来介绍内容覆盖的办法。
◇技术原理
通常来说,图片文件都有包含2部分:文件头和数据区。而“内容覆盖法”,就是把要隐藏的文件,直接【覆盖】到图片文件的【数据区】的【尾部】。比方说,某图片有 100KB,其中文件头占 1KB,那么,数据区就是 99KB。也就是说,最多只能隐藏 99KB 的文件。
切记:覆盖的时候,千万不可破坏【文件头】。文件头一旦破坏,这个图片文件就【不再是】一个合法的图片文件了。
使用这种方法,对图片文件的格式,是有讲究的——最好用【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:\n%s container data output" % sys.argv[0]) except Exception as err : print(err)
上述 Python 代码很好懂。略有编程基础的同学,10分钟之内就可以用自己熟悉的语言重写一个类似的。
没学过 Python 的同学,如果有兴趣,可以看看俺之前写的《为什么俺推荐 Python?》系列博文。
对于某些熟悉 Python 的同学,可能会质疑上述代码——对文件操作,为啥不用
with
语句块捏?俺来解释一下:
上述代码这么写是为了让【不懂】Python 的程序员更容易理解——因为其它编程语言大都采用“打开/读写/关闭”三部曲来操作文件内容。
◇提取信息的步骤
和前一种方法类似。如果你覆盖的是压缩文件,提取的时候,可以用压缩工具打开图片,就可以直接看到压缩包里面的内容了。
◇优点
1. 图片的文件尺寸没变。
2. 虽然隐藏文件覆盖到数据区,破环了原图像的内容。但是从格式上来讲,该图片文件的格式还是合法的(因此,你可以把这种图片上传到各种贴图的网站,技术上不会出问题)
3. 如果隐藏的是压缩文件,提取的过程很简单。
◇缺点
1. 由于隐藏的文件覆盖了数据区,因此,图片在显示的时候,会有一块区域变成灰蒙蒙的(如果遭遇“肉眼审查”,可能会引起怀疑)
2. 隐藏文件的大小,有一定的限制——不能大于图片数据区的尺寸。
3. 对图片格式有一定要求。此处再啰嗦一下,建议用 24位色的 BMP 格式。
★隐写法
最后,来介绍一种最复杂,但是也最高级(最隐蔽)的方法——隐写术。
◇技术原理
此方法会涉及较深奥的技术领域,俺也就知道个大概。通俗地说:如果把图片的某个像素的颜色,进行微小的调整,肉眼是看不出来的;因此,专门的软件,利用某些高深的算法,就可以在变化的像素中隐藏信息。
有兴趣的同学,可以看“这里”的介绍;懂洋文的,还可以看更详细的介绍,在“这里”。
◇隐藏/提取信息的步骤
使用这种方法,你需要用专门的工具来进行信息的隐藏和提取。在进行隐藏时,你除了指定图片文件和被隐藏的文件,还需要设置一个密码。隐写工具会把你的隐藏文件先加密,然后再进行隐写;提取的时候,需要用同一款隐写工具进行提取,并输入同样的密码,才能提取出来。
假如图片文件落入攻击者手中,他必须【同时知道】这2个信息(你用哪款隐写工具,你隐写时设置的密码),才【有可能】破解出隐含的信息(仅仅是“有可能”)。因此,安全性相当高。
◇相关工具
下面介绍几款工具,大伙儿可以根据自己喜好,挑选一个试试看。
名称 | 官网 | 界面 | 类型 |
---|---|---|---|
Silent Eye | 这里 | 图形界面 | 开源软件 |
Steg Hide | 这里 | 命令行界面 | 开源软件 |
Ultima Steganography | 这里 | 图形界面 | 商业软件 |
◇优点
1. 隐蔽性非常好。图片用肉眼看上去几乎没变(其实是有极其轻微的变化,但是肉眼看不出)
2. 图片文件的大小没变化。
3. 即使是专业人士,也很难判断一张图片是否包含了隐写术的数据。
◇缺点
1. 隐藏信息和提取信息比较麻烦,需要使用专门的工具。
2. 只能隐藏较少的信息(此方法能隐藏的信息量,和图片面积有关,和图片格式无关。比如一张 1600*1200 尺寸的,无论哪种格式,大约只能隐藏【几 KB】的数据)
★结尾
今天介绍的几个招数,除了可以用于图片文件,还可以用在其它的多媒体文件中(比如:音频文件、视频文件)。有兴趣的网友,可以自个儿研究一下。
俺博客上,和本文相关的帖子(需翻墙):
《用图片传播翻墙软件》
《文件加密的扫盲介绍》
《如何用“磁盘加密”对抗警方的【取证软件】和【刑讯逼供】,兼谈数据删除技巧》
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2011/06/use-image-hide-information.html
有人打算整理一下关于编程随想下落的线索吗?(从正反两个方面来举证)
好多怪事都是人为的,第一在搞邪术如祭鬼封神献祭打call,其次是搞种姓的事,
这帮东西用老外的名义来操控挑拨玩弄这个那个,这也是奇葩的,和叫东土人找阿三还是鬼子去表达册封封禅这皇帝是东土的皇帝一样奇葩, ......
ym蜀人都不愿放手的东西如屁眼套路,幼女,献祭,老单和最高神位是有原因的,很值得去研究的 ......
即使博主能活着出狱,若要看到他更新六四系列,那也是在天朝发生了民主化之后,共产党不再有能力镇压批评者之时。
就算哪天中国情报部门不经司法程序,直接把人暗杀了,我也不会觉得奇怪。
https://www.zaobao.com.sg/realtime/china/story20241226-5649612
https://www.youtube.com/watch?v=ozVq_04XMro
如果出现了自杀场景,多半是政府秘密下令处决,并伪装成了自杀。
来自Firsthack的评论
而且,二审的发改率(发回重审+改判)是一个考核政绩的指标,高层认为这个数字越低说明冤假错案越少,然后下面就越容易升官。 ......
原神UID:310221197410210025
互动热线: 13524626271 上海移动
学历: 硕士
生日: 19741021
身高: 165 ......
周欣身份证310105197106042383
户籍地址 :上海市闵行区吴中路429弄15号501室
同户人 :薛军,男,310106196903180414,1969年03月18日; ......
希望各大媒体都报道这几个名字:审判长周欣,审判员:凌莉、须梅华。
家属贝震颖推特号:Birds_b_r_32309
多谢分享“中药注射剂”等国产医疗行业的相关丑闻。
另外,关于疫情期间的乱象,俺整理了一篇:
《每周转载:白纸抗议年的“动态清零”灾难(网文14篇,多图)》
多年前不记得在哪篇博文的评论区和博主讨论叙利亚的命运,当时叙利亚的局势还未尘埃落定。可惜博主现在大牢内,看不到。
这次叙利亚的民主转型发生在俄国陷入战争的泥沼的背景下。 ......
这个是个邪术,第一个是给上面看(不知什么鬼),其次的就真的会指导目标去实际地去做这么些的犯罪邪恶,侵犯幼女的情节是经常频繁重复地出现地,和侵犯女性,还有就是生命 ......
估计到最高法院也没戏,可能会以9:0判决禁抖音。
欢迎提出不同观点。
你提到的是这二者之间的差异,俺也同意这些差异确实存在。
但是,俺要开始说但是了。从本文,咱们也可以讨论这二者之间的共性,至少包含以下方面: ......
玩邪术玩出个什么结果好歹给公开一下,拼命玩邪术还一声不吭,很危险的,要分享分享,劳资帮你们来研究研究
劳资相信这帮东西是能穿越时空的,现在是2019年的ZS,时空被改变穿越了。穿越时空的套路。这帮东西几千年都一个屌样,来几个十级地震都不会任何改变。 ......
现在的两党是争先比谁对华更强硬,已经通过的制裁法案不会松绑,已经加的关税也不会再降,否则就会被在野党骂成“通敌叛国”。
明年1月19日之前,抖音会被禁。
每天上网的好多人都在聊政治呢,难道你要把每一个聊政治的人都抓起来判刑?那也没用。因为年轻人越来越倾向于认为政治制度才是造成他们被困在他那个阶层的重要原因。 ......
这个博客对于政府的批评,大部分都是有理有据。你要是觉得哪里不对,可以反驳博主嘛。判7年是究竟有多心虚? ......
以色列做任何事,都是美国包容范围,和美国民意无关(甚至抗议都无效)。台湾今后也会差不多。
国会一旦提出新的关于台湾的法案,无论是军售,亦或是改善台湾的国际地位等等,都很容易造成近乎【全票通过】。 ......
然而,公报本身只是行政政府的声明,其效力不如法律。 ......
然而,现在的人们,对于不能证明是否为间谍的走线客,也不太宽容。估计人们会支持一律用“有间谍嫌疑”之类的理由,实行一律驱逐的政策。 ......
但是,有些两党已经形成共识的事,其实是不受太大影响的。例如:把台湾武装成以色列。
所以我估计,中共在川普第2任期的前2年之内,就会对台湾动手。
因为这次GOP在众院优势实在太小了,稍微发生一点差错,钟摆效应会让民主党夺回之。
参议院不好说。如果连参议院也丢了,那川普后两年就可能成为跛脚总统,啥事都干不了。
不服者会选择:明着顺从,其实背地里跟共产党对着干。
众议院估计是个险胜。
上次共和党在众议院也是微弱优势,导致议长难产。
这次应该不会难产,因为有川普在,他只要在台上喊几句,就可以让任何一个人当议长,其它共和党议员不会阻挠。 ......
根据NBC新闻:
https://www.nbcnews.com/politics/immigration/trump-may-deport-hundreds-thousands-migrants-biden-allowed-legally-ent-rcna179357 ......
就是先用民调测量其它选举,比如某个地方议员的选举,然后和民调进行对比,看女性候选人是否严重吃亏,是否和民调严重不符。
如果发生该现象,那得出的差额数字,就是该地隐藏的“害羞的性别歧视者”的百分比。 ......
因为“害羞的川粉”等受访者不诚实回答问题的现象,仍然使得民调失真。
贺锦丽连普选票都输了。
你民主党输得这么惨,总不能反思为啥没去迎合那些“黑命贵零元购”之类的种族主义口号吧?反思搞种族平权搞得过头了?
......
美国出了个川贼东。抗战前没做到【攘外必先安内】,这下麻烦大了。
恭喜美国又创造了世界纪录。
估计是川普险胜。
因为大法官的任命是由总统和参议院共同决定,如果总统是川普,那他就会提名非常有争议的保守派大法官。
......
......
川普险胜29%
其它情况基本可以排除。
我的意见是把第13问算成川普+1,他不是国家英雄,但很多人粉川。
然后把第12问算成贺锦丽+1,因为川黑人数太多了,这些人的票会投给贺锦丽。
◇以【川普】为中心展开
◇极化现象
这个没变
......