zoukankan      html  css  js  c++  java
  • 江湖高手专用的“隐身术”:图片隐写技术

    我们在影视作品中经常会看到一门功夫叫隐身术,是一种使身体隐形从而看不见的幻术。

     

    你知道信息安全里面也有“隐身术”吗?没错,它就是隐写术!

    隐写术是关于信息隐藏,即不让计划接收者之外的任何人知道信息的传递事件(而不只是信息的内容)的一门技能。

    按照载体对象分类可以分为文本隐写术、图像隐写术、音频隐写术、视频隐写术,本文主要介绍的是图像隐写术,先详细分析JPEG文件格式,然后研究隐藏文件的方法及原理,文章阅读用时约5分钟。

    基础知识

    JPEG文件

    JPEG是Joint Photographic Experts Group(联合图像专家小组)的缩写

    JPEG本身只有描述如何将一个影像转换为字节的数据串流(streaming),但并没有说明这些字节如何在任何特定的储存媒体上被封存起来。

    .jpeg/.jpg是最常用的图像文件格式,具有以下特点:

    1、支持有陨压缩

    2、不支持透明

    3、不支持动画

    4、非矢量

     

    文件格式判断

    针对这类文件格式我们不能仅仅看文件后缀名

    以下两个文件后缀名不一样,但都是同一个文件

     

    我们可以通过十六进制编辑器打开文件然后查看文件标志来判断

     

    常见隐写方法

    Exif信息

    Exif文件是JPEG文件的一种,遵从JPEG标准,只是在文件头信息中增加了拍摄信息和索引图

    储存在APP1(0xFFE1)数据区中

    我们可以直接使用十六进制编辑器分析查看

     

    也可以使用MagicEXIF软件,这款软件可以帮助我们快捷的修改查看Exif信息。

    下载地址:http://www.magicexif.com/

     

    图种

    这个是先将torrent文件压缩为rar文件或者zip文件都行

    然后打开命令行输入

    copy/b 图片文件名称+压缩文件名称 生成的文件名称
     例子:copy /b time.jpg+kanmengou.zip 3.jpg
    

     

     

    生成的文件正确预览没任何问题,修改文件后缀为zip,或者rar就能看见隐藏的tor文件。

     

    JSteg隐写算法

    基于DCT系数的变换进行数字隐写,主要思想是将秘密消息嵌入在量化后的DCT系数的最低比特位上。但对原始值为O、1的DCT系数不进行嵌入。提取秘密消息时,只需将载密图像中不等于0、l的量化DCT系数的LSB取出即可。

    JSteg隐写过程:

    (1)部分解码JPEG图像,得到二进制存储的AC系数,判断该AC系数是否等于1或0,若等于则跳过该AC系数,否则,执行下一步。

    (2)判断二进制存储的AC系数的LSB是否与要嵌入的秘密信息比特相同,若相同,则不对其进行修改,否则执行下一步。

    (3)用秘密信息比特替换二进制存储的AC系数的LSB,将修改后的AC系数重新编码得到隐秘JPEG图像。

    JSteg加密软件下载地址:

    链接:https://pan.baidu.com/s/1FRXUuPgUPcEGR_mHc_cCkg 密码:2js5
    

    使用说明如下:

     

     

    其他

    还要很多高级加密算法,比如JPHide、OutGuess、Invisible Secrets、F5、appendX、Camouflage,这里不再一一介绍。

    检测

    接下来我们将介绍如何去识别这些隐写术。

    JPEGsnoop

    JPEGsnoop是一个免费的,便携的详细图像解码器,负责审查任何文件类型的包含JPEG压缩图像。

    下载地址:

    https://www.impulseadventure.com/photo/jpeg-snoop.html

    解析jpeg图片的EXIF信息

     

    查看DQT的数据

     

    分析起来很方便。

     

    Stegdetect

    Neils Provos开发的隐写工具Stegdetect,通过统计分析技术评估JPEG文件的DCT频率系数,它可以检测到通过JSteg、JPHide、OutGuess、Invisible Secrets、F5、appendX和Camouflage等这些隐写工具隐藏的信息,并且还具有基于字典暴力破解密码方法提取通过Jphide、outguess和jsteg-shell方式嵌入的隐藏信息。

    项目地址:

    https://github.com/abeluck/stegdetect

    这是Linux环境下的项目,我们编译一下。

    root@linux:~/tools/stegdetect# ./configure
    root@linux:~/tools/stegdetect# make
    

    使用说明:

     ./stegdetect -tj -s 10.0 hidetime.jpg
     hidetime.jpg : jsteg
    

    选项

    -q 仅显示可能包含隐藏内容的图像。
    -n 启用检查JPEG文件头功能,以降低误报率。如果启用,所有带有批注区域的文件将被视为没有被嵌入信息。如果JPEG文件的JFIF标识符中的版本号不是1.1,则禁用OutGuess检测。
    -s 修改检测算法的敏感度,该值的默认值为1。检测结果的匹配度与检测算法的敏感度成正比,算法敏感度的值越大,检测出的可疑文件包含敏感信息的可能性越大。
    -d 打印带行号的调试信息。
    -t 设置要检测哪些隐写工具(默认检测jopi),可设置的选项如下:
     j 检测图像中的信息是否是用jsteg嵌入的。
     o 检测图像中的信息是否是用outguess嵌入的。
     p 检测图像中的信息是否是用jphide嵌入的。
     i 检测图像中的信息是否是用invisible secrets嵌入的。
    -V 显示软件版本号。
    

    以上是今天的全部内容,大家看懂了吗?

  • 相关阅读:
    C#中NULL,"",DBNULL,String.Empty,Convert.IsDBNull()的区别
    vs 扩展和更新下载的插件在什么位置呢,看看吧,哈哈
    全面了解 Nginx 主要应用场景
    Nginx配置详解
    ulimit -n 修改
    mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化
    java.net.UnknownHostException 异常处理
    Oracle 11G在用EXP 导出时,空表不能导出解决
    expdp和impdp导入和导出数据
    CentOS6.5运行yum报错:No module named yum
  • 原文地址:https://www.cnblogs.com/ichunqiu/p/10907560.html
Copyright © 2011-2022 走看看