什么是“隐写”

“隐写”,即人们通常所说的信息隐藏,是利用人类感觉器官的不敏感性(感觉冗余),以及多媒体数字信号本身存在的冗余(数据冗余特性),将秘密信息隐藏于载体信号之中的技术。秘密信息被隐藏后,不易被察觉并且不影响载体信号的感官效果和使用价值。秘密信息可以是文本、声音或图像等,载体信号可以是数字图像、文本、音频和视频文件等。隐写技术的不易察觉性,保证了隐藏信息在传输过程中不会引起注意,从而降低了秘密通信被发现的可能。

隐写的首要目标是隐蔽,也就是使加入秘密信息后的公开信息的降质尽可能小,使人无法觉察出隐藏的数据。隐写提供了一种有别于加密的安全模式,其目的不同于传统加密,不在于限制正常的数据使用,而在于保证隐藏的数据不被侵犯和觉察。隐写技术与传统的加密技术的区别关键在于:传统的加密技术仅仅隐藏了信息的内容,而隐写技术不但隐藏了信息的内容而且隐藏了信息的存在。

举一个简单的例子:在BMP图片中,一个8bit的数据代表一个像素点,在这样的图片中,人眼是无法识别11111111和11111110所代表的红色的。这里做一个定义:用来隐藏秘密信息(或信息块)的载体的二进制最小位数,称为“最低有效位”(The Least Significant Bit,LSB)。上述BMP图片的例子中,LSB即为8。

F5隐写工具的使用

在这里,我尝试着在Windows 10系统上运行该工具。

一、在GitHub上下载F5隐写工具,下载链接为https://github.com/matthewgao/F5-steganography。下载完成后解压(本例中,我将其解压至D盘根目录):

编辑切换为居中

添加图片注释,不超过 140 字(可选)

打开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)打开查看内容。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

二、安装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等),手动设置环境变量则是必需的步骤。具体设置方法为:

点击“控制面板”->“系统”->“高级系统设置”:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

弹出如下的“系统属性”对话框时,在“高级”标签页下点击下方的“环境变量”按钮:

编辑

添加图片注释,不超过 140 字(可选)

在“系统变量”模块下点击“新建”按钮:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

新建两个变量:

变量名称为“JAVA_HOME”,变量值为“C:\Program Files\Java\jdk1.8.0_191”;

变量名称为“CLASSPATH”,变量值为“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”(注意前面有一个“.”和“;”)。

如图所示:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

继续在“系统变量”列表中找到并选中“PATH”变量,点击“编辑”按钮:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

继续点击“新建”按钮,增加2条环境变量“%JAVA_HOME%\bin”和“%JAVA_HOME%\jre\bin”,完成后点击“确定”,如图所示:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

运行cmd,输入命令“java”,出现一连串的指令提示,说明环境变量配置成功了:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

三、测试F5隐写工具软件的演示程序(demo)

在cmd中,依次输入命令“D:”和“cd F5-steganography-master”进入F5隐写工具软件所在路径:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

继续输入命令“e.bat”直接运行e.bat程序:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

执行e.bat程序后的效果为:bin.noise文件中的信息被嵌入到lopez.bmp图像文件中,并生成了lopez.jpg文件。此时,若用户同时打开lopez.bmp和lopez.jpg进行比较,是很难发现两者的不同点的:

编辑

lopez.bmp

编辑

lopez.jpg

继续在cmd中输入“d.bat”,直接运行d.bat程序:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

执行d.bat程序后的效果为:从lopez.jpg文件中提取到了隐藏信息,并被保存至output.txt文件中。此时,用户可同时打开output.txt和bin.noise进行比较,发现两者的内容是相同的:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

output.txt的内容

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

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:

编辑切换为居中

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文件:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

打开生成的1.jpg图片,发现其内容几乎与1.bmp一模一样:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

1.jpg的内容

(2)在命令提示符中输入“java Extract 1.jpg -p 123456”, 将1.jpg中的隐藏信息提取到output.txt文件中:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

执行完毕后,比较output.txt和1.noise的内容,发现两者一致,隐藏信息提取正确:

编辑切换为居中

output.txt的内容

Bingo!

作者:袁泉,深信服安全服务认证专家,产业教育中心资深讲师,曾任职于国防科技大学信息通信学院,从事计算机网络、信息安全专业教学和科研工作十余年,持有HCNA(SECURITY)和HCNA (R&S)证书。熟悉 TCP/IP 协议及网络安全防护体系架构,具有丰富的计算机网络管理、运维与安防实践经验。

深信服技术认证之F5隐写工具初探相关推荐

  1. 深信服技术认证之容灾与备份(一)

    1.1 业务数据可用性问题 随着信息技术的发展,互联网上的数据量激增,随之而来的数据和业务的可用性越来越重要.但是实际上业务系统中的业务数据可用性问题就像打地鼠游戏一样,永远猜不到下一个问题会在哪里冒 ...

  2. 深信服技术认证之IPV6地址表示及常见分类

    根据最新数据显示我国IPV6活跃用户数已达4.35亿,约占中国网民的46.27%,IPV6地址资源位居全球第二,未来IPV6市场规模将超10亿.在巨大的资源背景推动下,了解IPV6已经成为当代IT从业 ...

  3. (3.1)【多媒体中的数据隐藏】数字音频中的数据隐藏、原理、音频隐写工具 S-TOOLS、提取工具MP3Stego

    目录 一.多媒体简介 1.1.流行: 1.2.隐患: 二. 数字音频中的数据隐藏 2.1.简介: 2.2.原理: 三.简单音频文件嵌入技术(不可感知的方法) 3.1.历史: 3.2.原理: 3.3.  ...

  4. 图片图层隐写_【软件】imageIN · 图影-隐藏文件到图片,简单轻快的图片隐写工具...

    还记得以前的图种制作吗,今天给大家分形下一个相关的工具. 度盘下载(imageIN Beta1.0 (2.18MB)) :pan.baidu.com/s/1hqve8YS 官网下载:本地下载 这是一个 ...

  5. 深信服技术支持工程师(安全、云计算方向)面试题目

    深信服的技术支持面试确实要比其他厂商的难得很多,我实习的时候也有非常多的985/211 的本科生和研究生,最开始将近2000个人,到最后才留下几十个,竞争是异常惨烈(秋招春招也肯定激烈)毕竟给的薪资比 ...

  6. 面经----深信服---技术支持实习生

    前段时间面了深信服的技术面,大概20分钟左右,今天给大家分享一下过程.基本上简历上写的都会问 1.自我介绍,然后面试官介绍了他公司的情形,会经常加班,问我有什么看法 2.谈谈ospf的工作过程 3.浅 ...

  7. 【隐写工具】【试一试?】jphide seek(JPHS) 使用方法,检测提示,附下载地址

    目录 准备阶段: windows可视化界面的下载地址: GitHub下载地址: 使用对象: JPHS介绍: 隐藏文件: 第一步:准备文件 第二步:(windows版本) 打开软件,点击"Op ...

  8. java lsb隐写_LSB隐写工具对比(Stegsolve与zsteg)

    起因 很久很久以前,有一道送分题没做出来,后来看writeup,只要zsteg就行了. 命令运行的结果 root@LAPTOP-GE0FGULA:/mnt/d# zsteg 瞅啥.bmp [?] 2 ...

  9. CTF 隐写工具Steghide

    Steghide 是一个可以将文件隐写到图片或者音频得工具 Steghide支持以下图像格式:JPEG,BMP,WAV,AU文件. apt-get install steghide 使用查看帮助文件 ...

最新文章

  1. 新型脑-脑接口,实现“阿凡达”式的跨鼠遥控
  2. 计算机动画课程设计,计算机动画课程设计.doc
  3. Objective-C:三种文件导入的方式以及atomic和nonatomic的区别
  4. ACS AD 和本地验证SSL ×××
  5. 网工必备的存储知识详解
  6. css实现图片虚化_HTML+CSS入门 如何实现背景图片虚化效果
  7. [Vue源码分析]自定义事件原理及事件总线的实现
  8. linux 一个超简单的makefile
  9. numpy 数组抽取_清晰易懂的Numpy入门教程
  10. python多进程并发与pool多线程
  11. host 端口_如何让多端口网站用一个nginx进行反向代理实际场景分析
  12. 设计资源 | 万圣节矢量图标
  13. 修改tomcat控制台title的方法
  14. python网页教程_python 查询 网页Python基础教程01 Hello World!
  15. 《SAP CRM管理与实施指南》一一2.1 SAP CRM基础数据管理
  16. java日期计算天数_Java 两个日期间的天数计算
  17. mysql 脏页刷新_InnoDB脏页刷新机制
  18. ifft2 二维快速傅里叶逆变换(Matlab)
  19. 《信号与系统》很难?也许你应该看看这篇文章
  20. 李宏毅老师《机器学习》课程笔记-3卷积神经网络

热门文章

  1. godaddy构建ddns服务
  2. 小孟5w接了个盲盒小程序,三周开发完毕
  3. 网络打印机安装教程:HP LaserJet Pro MFP M226dw,Windows解决外网无法使用打印机问题
  4. Keras的loss_weights和class_weight
  5. 基于STM32设计的云端健康管理系统(采用阿里云物联网平台)
  6. Linux——Vim编辑器三种模式(命令模式、输入模式、末行模式)的基本使用总结
  7. 网易mumu模拟器禁止更新/屏蔽更新方法
  8. ARIMA模型实例讲解:时间序列预测需要多少历史数据?
  9. 【SaaS播客】onboard4. 连线硅谷顶尖Product-Led Growth公司产品经理,聊聊如何打造一流PLG产品
  10. 腾讯云短信服务(SMS)申请流程