深信服技术认证之F5隐写工具初探 原创

发布于 2022-4-2 16:45
浏览
0收藏

什么是“隐写”
“隐写”,即人们通常所说的信息隐藏,是利用人类感觉器官的不敏感性(感觉冗余),以及多媒体数字信号本身存在的冗余(数据冗余特性),将秘密信息隐藏于载体信号之中的技术。秘密信息被隐藏后,不易被察觉并且不影响载体信号的感官效果和使用价值。秘密信息可以是文本、声音或图像等,载体信号可以是数字图像、文本、音频和视频文件等。隐写技术的不易察觉性,保证了隐藏信息在传输过程中不会引起注意,从而降低了秘密通信被发现的可能。
隐写的首要目标是隐蔽,也就是使加入秘密信息后的公开信息的降质尽可能小,使人无法觉察出隐藏的数据。隐写提供了一种有别于加密的安全模式,其目的不同于传统加密,不在于限制正常的数据使用,而在于保证隐藏的数据不被侵犯和觉察。隐写技术与传统的加密技术的区别关键在于:传统的加密技术仅仅隐藏了信息的内容,而隐写技术不但隐藏了信息的内容而且隐藏了信息的存在。
举一个简单的例子:在BMP图片中,一个8bit的数据代表一个像素点,在这样的图片中,人眼是无法识别11111111和11111110所代表的红色的。这里做一个定义:用来隐藏秘密信息(或信息块)的载体的二进制最小位数,称为“最低有效位”(The Least Significant Bit,LSB)。上述BMP图片的例子中,LSB即为8。
F5隐写工具的使用
在这里,我尝试着在Windows 10系统上运行该工具。
一、在GitHub上下载F5隐写工具,下载链接为https://github.com/matthewgao/F5-steganography。下载完成后解压(本例中,我将其解压至D盘根目录):
深信服技术认证之F5隐写工具初探-开源基础软件社区

打开D:\F5-steganography-master文件夹,其中几个主要的程序(文件)为:
(1)Embed.java:用于将信息嵌入图像文件的主程序;
(2)Extract.java:用于将隐藏信息从图像文件载体中提取的主程序;
(3)bin.noise:该文件含有需要隐藏的信息;
(4)e:将指定信息(bin.noise)嵌入指定图像文件(lopez.bmp)的演示程序脚本;
(5)e.bat:将指定信息(bin.noise)嵌入指定图像文件(lopez.bmp)的批处理演示程序;
(6)d:将隐藏信息从图像文件(lopez.jpg)中提取到指定文件(output.txt)的演示程序脚本;
(7)d.bat:将隐藏信息从图像文件(lopez.jpg)中提取到指定文件(output.txt)的批处理演示程序。
以上程序均可用记事本程序(notepad.exe)打开查看内容。
深信服技术认证之F5隐写工具初探-开源基础软件社区
二、安装Java运行环境
由于F5隐写工具的两个主程序Embed.java、Extract.java均是Java语言编写的,为了正常运行它们,需要在Windows中安装Java程序运行环境。可以选择安装JDK(Java Development Kit,Java程序开发包)或JRE(Java Runtime Environment,Java程序运行环境)。本例中选择安装JDK 1.8。
(1)安装JDK 1.8
下载JDK 1.8安装包(jdk-8u191-windows-x64.exe),并按照提示安装即可。本例中,JDK安装的默认路径为C:\Program Files\Java。
(2)设置环境变量
运行Java程序时需要进行两个步骤:第一步编译,将源文件编译成字节码,对应的是javac命令;第二步解释,解释执行平台无关的字节码程序,对应的是java命令。
虽然计算机安装JDK并且JDK的安装路径下面包含了这两个命令,但是计算机并不知道到哪里找这两个命令,在cmd执行这两个命令的时候,可能会提示“不是内部或外部命令,也不是可运行程序或批处理文件”。因此,设置环境变量,就是要告诉计算机这些命令所处的路径,以方便计算机找到它们。
本例中,由于安装的是JDK 1.8,安装程序会自动设置环境变量,因此手动设置环境变量这一步骤可以省略。如果安装的是低版本的JDK(比如1.5、1.6等),手动设置环境变量则是必需的步骤。具体设置方法为:
点击“控制面板”->“系统”->“高级系统设置”:
深信服技术认证之F5隐写工具初探-开源基础软件社区

深信服技术认证之F5隐写工具初探-开源基础软件社区
弹出如下的“系统属性”对话框时,在“高级”标签页下点击下方的“环境变量”按钮:
深信服技术认证之F5隐写工具初探-开源基础软件社区

在“系统变量”模块下点击“新建”按钮:
深信服技术认证之F5隐写工具初探-开源基础软件社区
新建两个变量:
变量名称为“JAVA_HOME”,变量值为“C:\Program Files\Java\jdk1.8.0_191”;
变量名称为“CLASSPATH”,变量值为“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”(注意前面有一个“.”和“;”)。
如图所示:
深信服技术认证之F5隐写工具初探-开源基础软件社区
继续在“系统变量”列表中找到并选中“PATH”变量,点击“编辑”按钮:
深信服技术认证之F5隐写工具初探-开源基础软件社区
继续点击“新建”按钮,增加2条环境变量“%JAVA_HOME%\bin”和“%JAVA_HOME%\jre\bin”,完成后点击“确定”,如图所示:
深信服技术认证之F5隐写工具初探-开源基础软件社区
运行cmd,输入命令“java”,出现一连串的指令提示,说明环境变量配置成功了:
深信服技术认证之F5隐写工具初探-开源基础软件社区
三、测试F5隐写工具软件的演示程序(demo)
在cmd中,依次输入命令“D:”和“cd F5-steganography-master”进入F5隐写工具软件所在路径:
深信服技术认证之F5隐写工具初探-开源基础软件社区
继续输入命令“e.bat”直接运行e.bat程序:
深信服技术认证之F5隐写工具初探-开源基础软件社区
执行e.bat程序后的效果为:bin.noise文件中的信息被嵌入到lopez.bmp图像文件中,并生成了lopez.jpg文件。此时,若用户同时打开lopez.bmp和lopez.jpg进行比较,是很难发现两者的不同点的:
深信服技术认证之F5隐写工具初探-开源基础软件社区
lopez.bmp
深信服技术认证之F5隐写工具初探-开源基础软件社区
lopez.jpg
继续在cmd中输入“d.bat”,直接运行d.bat程序:

深信服技术认证之F5隐写工具初探-开源基础软件社区
执行d.bat程序后的效果为:从lopez.jpg文件中提取到了隐藏信息,并被保存至output.txt文件中。此时,用户可同时打开output.txt和bin.noise进行比较,发现两者的内容是相同的:
深信服技术认证之F5隐写工具初探-开源基础软件社区
output.txt的内容
深信服技术认证之F5隐写工具初探-开源基础软件社区
深信服技术认证之F5隐写工具初探-开源基础软件社区
bin.noise的内容

四、运行Java命令隐藏和提取自定义信息
通过运行演示程序我们发现,隐藏信息时所使用的命令为:
java Embed lopez.bmp lopez.jpg -c “” -e bin.noise -p pleasechangethispassphrasetoyourown
其中,“lopez.bmp”(原载体文件)、“lopez.jpg”(嵌入隐藏信息后的载体文件)、“bin.noise”(信息文件)以及“pleasechangethispassphrasetoyourown”(程序的执行口令)等参数均可根据需求进行设置或修改。
提取隐藏信息时所使用的命令为:
java Extract lopez.jpg -p pleasechangethispassphrasetoyourown
其中,“lopez.jpg”(嵌入隐藏信息后的载体文件)以及“pleasechangethispassphrasetoyourown”(程序的执行口令)等参数均可根据需求进行设置或修改。
弄清了命令和参数后,我首先自建了一张图片1.bmp和一个保存了自定义信息的文件1.noise:
深信服技术认证之F5隐写工具初探-开源基础软件社区
1.bmp的内容
1.noise的内容
尝试使用1.bmp图像文件隐藏1.noise中的信息,并将隐藏信息提取到output.txt中,程序执行口令设置为“123456”。这个过程的操作步骤如下:
(1)在cmd中输入“java Embed 1.bmp 1.jpg -c “” -e 1.noise -p 123456”,将1.noise中的信息嵌入到1.bmp,并生成1.jpg文件:
深信服技术认证之F5隐写工具初探-开源基础软件社区
打开生成的1.jpg图片,发现其内容几乎与1.bmp一模一样:
深信服技术认证之F5隐写工具初探-开源基础软件社区
1.jpg的内容
(2)在命令提示符中输入“java Extract 1.jpg -p 123456”, 将1.jpg中的隐藏信息提取到output.txt文件中:
执行完毕后,比较output.txt和1.noise的内容,发现两者一致,隐藏信息提取正确:
深信服技术认证之F5隐写工具初探-开源基础软件社区
output.txt的内容
Bingo!
作者:袁泉,深信服安全服务认证专家,产业教育中心资深讲师,曾任职于国防科技大学信息通信学院,从事计算机网络、信息安全专业教学和科研工作十余年,持有HCNA(SECURITY)和HCNA (R&S)证书。熟悉 TCP/IP 协议及网络安全防护体系架构,具有丰富的计算机网络管理、运维与安防实践经验。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
2
收藏
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐