专栏首页陈冠男的游戏人生CTF杂项中图片隐写相关知识汇总
原创

CTF杂项中图片隐写相关知识汇总

图片相关

PNG 格式简介

文件格式:对于PNG文件来说,其文件头总是由固定的字节来描述的,剩余的部分由3个以上的PNG数据(Chunk)按照特定的顺序组成。

文件头:89 50 4E 47 0D 0A 1A 0A + 数据块 + 数据块 + 数据

块…..

修改图片高度

如果linux下打不开,windows下打得开可能就是该高度了 左边是宽度,圈起来的是高度,,把高度改成跟宽一样的
image.png

文件尾追加文件

直接十六进制编辑器

图片元数据

元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(Data about

data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。

元数据中隐藏信息在比赛中是最基本的一种手法,通常用来隐藏一些关键的 Hint 信息

或者一些重要的比如 password 等信息。

这类元数据可以 右键 -> 属性 查看

outguess

kali下使用outguess -r avatar.jpg -t 1.txt 把 avatar.jpg 图片破解信息的数据输出到 1.txt

Beyond Compare

使用软件:Beyond Compare 提取码: uuch

安装打开后界面是这样的:点击红框框出来的

image.png

选择图片比较

image.png

上面还有一些选项可以试试

image.png

IDAT信息隐藏

IDAT:存储实际的数据,在数据流中可包含多

个连续顺序的图像数据块,储存图像像数数据。

在数据流中可包含多个连续顺序的图像数据块。

采用 LZ77 算法的派生算法进行压缩。

可以用 zlib 解压缩。

**IDAT块只有当上一个块充满时,才会继续下

一个新块** 如果有 IDAT 还没填满就填充了下一个就要考虑是不是有问题

命令:pngcheck.exe -v sctf.png 可以查看
image.png

也可以使用 Stegsolve -> Analysis -> File Format 有详细介绍

这就说明这 138 是认为添加的,把这个位置的内容串保存出来,在进行其他操作(文本进制转换、写图片)

LSB信息隐藏

PNG文件中的图像像数一般是由RGB三原色组成,每一种颜色占用8位,取值范围为

0×00~0xFF,即256种颜色,一共包含了256的三次方的颜色,即16777216(1千677W)种

颜色。人类的眼睛可以区分约1000万种不同的颜色,这就意味着人类的眼睛无法区分余下的颜色大约有6777216(677W)种

LSB隐写就是修改RGB颜色分量的最低二进制位(LSB),每个颜色都会有8bit,LSB隐写就是修改了像数中的最低的1Bit,而人类的眼睛不会注意到这前后的区别,每个像数可以携带

3Bit的信息,这样就把信息隐藏起来了

使用 Stegsolve 各个通道都看看,或者 Analysis -> Data Extract 合起来看看,有什么熟悉的保存出来

GIF信息隐藏

在某一帧图片藏着信息,用 ps 或者爱奇艺万能播放器也可以一帧一帧的看

每一帧图片间隔时间,可能藏着规律,或许是二进制编码、或许是摩斯密码

NTFS流隐写

安恒的一道题:猫片,先是LSB提取一个png,然后改高度得到完整的取反色,下载文件,得到RAR,使用NTFS流隐写,打开软件,然后用 winrar 解压缩,然后扫描一下,发现一些其他的东西,导出就可以了

image.png

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 逆向二期/004/crackme-002

    这是算法部分,首先提取字符串长度,这里是6,然后乘以17CFB=8EDE2,下面使用第一个字符的ascii码值(79),79加上8EDE2得到8EE5B,然后经...

    yichen
  • 智能合约:写一个hello world

    在这个合约代码里面,我们定义了一个名为 "Hello" 的合约。在合约初始化时,保存了一个字符串。例如,传入 "hello world",每次调用 say() ...

    yichen
  • 智能合约:跨合约调用漏洞

    solidity 提供了 call()、delegatecall()、callcode() 三个函数来实现合约直接的调用及交互,这些函数的滥用导致了各种安全风险...

    yichen
  • 简单易学的机器学习算法——朴素贝叶斯

    一、贝叶斯定理     1、条件概率         条件概率是指在事件B发生的情况下,事件A发生的概率,用 ? 表示。     2、全概率公式 image.p...

    zhaozhiyong
  • SAP Spartacus应用入口的模块加载单步调试

    看看我的app module,里面有两个export的对象:DebugConfig和AppModule:

    Jerry Wang
  • 2019-08-14 vue组件的封装(详细步骤)

    用户4344670
  • 前端学习数据结构与算法系列(五):冒泡排序的理解与实现

    当面试官问你什么是排序算法?请你用JavaScript实现一个简单的冒泡排序,如果你没掌握,就会被问住。

    一只图雀
  • Chrome 功能总结

    原文:https://developers.google.com/web/updates/2017/08/devtools-release-notes#awai...

    mafeifan
  • Vue教程(组件-切换案例)

      前面介绍了Vue中组件的创建方式和data及methods属性,本文我们来做一个Vue组件的切换案例,效果如下:

    用户4919348
  • 纯干货收藏版丨数据处理之数据精简概述(附大数据存储单位)

    本文导读:数据处理、数据挖掘、数据分析、大数据处理、数据精简、大数据存储单位基础知识整理,欢迎收藏。 本文概述:一、数据处理基础知识;二、大数据时代数据处理分...

    灯塔大数据

扫码关注云+社区

领取腾讯云代金券