图片隐写
图片隐写
置顶一个图片隐写神器,一键出 flag
https://github.com/zed-0xff/zsteg
安装:gem install zsteg
图片相关
PNG 格式简介
文件格式:对于PNG文件来说,其文件头总是由固定的字节来描述的,剩余的部分由3个以上的PNG数据(Chunk)按照特定的顺序组成。
文件头:89 50 4E 47 0D 0A 1A 0A + 数据块 + 数据块 + 数据 块…..
修改图片高度
如果linux下打不开,windows下打得开可能就是该高度了
左边是宽度,圈起来的是高度,,把高度改成跟宽一样的
文件尾追加文件
直接十六进制编辑器
图片元数据
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(Data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
元数据中隐藏信息在比赛中是最基本的一种手法,通常用来隐藏一些关键的 Hint 信息 或者一些重要的比如 password 等信息。
这类元数据可以 右键 -> 属性 查看
outguess
kali下使用outguess -r avatar.jpg -t 1.txt
把 avatar.jpg 图片破解信息的数据输出到 1.txt
f5-steganography
F5隐写加密:
java Embed 原图片.jpg 生成的图片.jpg -e 隐藏的文件.txt -p 密码
F5隐写解密:
java Extract 生成的图片.jpg -p 密码
演示:
ps. 之所以使用jview是看自带的.bat文件是用的这个,但是用java貌似没啥影响
Beyond Compare
使用软件:Beyond Compare 提取码: uuch
安装打开后界面是这样的:点击红框框出来的
选择图片比较
上面还有一些选项可以试试
IDAT信息隐藏
IDAT:存储实际的数据,在数据流中可包含多 个连续顺序的图像数据块,储存图像像数数据。
在数据流中可包含多个连续顺序的图像数据块。
采用 LZ77 算法的派生算法进行压缩。
可以用 zlib 解压缩。
IDAT块只有当上一个块充满时,才会继续下 一个新块
如果有 IDAT 还没填满就填充了下一个就要考虑是不是有问题
命令:pngcheck.exe -v sctf.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 合起来看看,有什么熟悉的保存出来
cloacked-pixel
https://github.com/livz/cloacked-pixel
这是一个用来看 LSB 隐写的东西(带密码的 LSB)
可以提取数据,用法很明确了
$ python lsb.py
LSB steganogprahy. Hide files within least significant bits of images.
Usage:
lsb.py hide <img_file> <payload_file> <password>
lsb.py extract <stego_file> <out_file> <password>
lsb.py analyse <stego_file>
GIF信息隐藏
在某一帧图片藏着信息,用 ps 或者爱奇艺万能播放器也可以一帧一帧的看
每一帧图片间隔时间,可能藏着规律,或许是二进制编码、或许是摩斯密码
NTFS流隐写
安恒的一道题:猫片,先是LSB提取一个png,然后改高度得到完整的取反色,下载文件,得到RAR,使用NTFS流隐写,打开软件,然后用 winrar 解压缩,然后扫描一下,发现一些其他的东西,导出就可以了