工具配置
1.Stegsolve
工具地址:http://www.caesum.com/handbook/Stegsolve.jar
解释:该工具需要安装jar包后才能配合使用,下面同时会给出快速打开工具的代码,需要两个文件,启动的时候启动vbs文件
start.bat
java -jar Stegsolve.jar
start.vbs
set ws=createobject("wscript.shell")
ws.Run """start.bat""",0
2.binwalk:
-
下载:https://github.com/ReFirmLabs/binwalk/archive/refs/tags/v2.3.2.zip
-
setup:
python setup.py install
-
便捷化配置:自己写一个快速启动binwalk的py然后打包成exe然后放置于python下面的Scripts目录就能直接在cmd
binwalk xxxx
执行命令import subprocess import sys # 获取命令行参数(除了脚本名称之外的部分) args = sys.argv[1:] # 指定 Python 解释器和 binwalk 脚本的路径 python_path = "python" binwalk_script = "D:\\python\\Scripts\\binwalk" # 使用 args 中包含的参数构造命令 command = [python_path, binwalk_script] + args # 调用 subprocess.call 来执行命令 subprocess.call(command)
pyinstaller --onefile binwalk.py
3. 010editor
下载:https://www.sweetscape.com/010editor/
复制16进制到左边:Ctrl+Shift+V
复制文本到右边边:Ctrl+V
插入内容:光标放至要插入内容处,然后在软件最上方一栏选择Edit然后选择插入选择Hex与大小即可
对代码进行异或操作等等:
4.WaterMark
解释:一款普通破解盲水印的工具(适合单图片),下载非官网,请注意
https://pan.quark.cn/s/ab1aaa012cd0#/list/share
5.BlindWaterMark
解释:一款普通破解盲水印的工具(适合多图片)
https://github.com/chishaxie/BlindWaterMark
一、LSB隐写
解释:LSB隐写即最低有效位隐写,LSB隐写就是修改RGB颜色分量的最低二进制位也就是最低有效位,写入数据,这样做的目的是人眼最难分辨出来,但是通过工具可以很容易的检测出来
知识补充:
- PNG图片,png图片是一种无损压缩的图片,因为无损压缩所以可以实现LSB隐写。
- JPG图片,jpg图片是一种有损压缩的图片,修改的数据会在压缩中损失,不可以实现LSB隐写。
- BMP的图片,是没有经过压缩的。BMP图片文件大小一般较大,bmp图片也可以实现LSB隐写。
Stegsolve查看red blue green三通道最低二进制位的方法:
- 查看
- 导出
普通情况:
- 选择图片
- 切换不同的颜色通道
二、Gif动图
解释:通过该工具能够一帧一帧的对Gif里面的内容进行查看
- 选择此功能对Gif图片进行一帧一帧查看
- 在线网站:https://tu.sioe.cn/gj/fenjie/(对动图,特别是多张图片需要拼接在一起的很有效)
三、图片隐写
解释:指的是一个文件里面包含其它格式文件与图片,此时可以通过binwalk
将它们分开,不能完全相信binwalk,这个工具有时候分辨不出来里面混杂的音频文件,建议使用010editor查看,或配合foremost,或者用010editor
进行查看
1.binwalk
解释:下面这三款工具要轮流使用直到完成任务,目前看来,binwalk
一般能分析对隐写的文件,但是拆分不出来,反而foremost能够拆分出来
binwalk xxxx -e
自动分离图片里面的内容
2.foremost
foremost xxx
3.dd
解释:dd需要结合binwalk显示的块数,例如下图
dd if=hong.mp3 of=hong1.jpeg skip=138170 bs=1
if=:输入文件,即源图片。
of=:输出文件,即提取出来的数据。
skip=N:跳过输入文件的前N个字节。
bs=1:设置块大小为1字节,配合skip可以准确定位到具体的字节。
N是你想要跳过的字节数,根据隐藏信息可能出现的位置来决定。
4.strings
解释:对于隐写而言,strings命令往往能看到图片里面写着的字符串,对于CTF而言,很可能就是出题人给的暗示
strings 1.png
四、图片高宽隐藏
解释:因为图片给的高度或宽度很小,当更改图片高或宽时,隐藏的内容就能看到了,可以使用工具TweakPNG,通过Stegsolve的File Format对比CRC,如果CRC与计算出来的有出入可能就是高度修改了,或者使用pngcheck工具查看CRCapt install pngcheck
五、图片模糊
解释:给的图片特别模糊看不清里面的内容,可以通过SmartDeblur进行调整对比度来看尝试让图片清晰一点
六、识别码
解释:有二维码、条形码等等,可能普通的扫码器扫描不出来,可以在在线网址上进行扫码https://online-barcode-reader.inliteresearch.com/
七、双图结合
解释:当题目中给出双图时,可能要用到Stegsolve的Image Combiner功能,先打开一张图再点击Image Combiner然后切换打开新图的色道有时候会出现二维码
八、盲水印(单图)
解释:我们遇到一些题可能暗藏着盲水印,需要我们来解决,
使用文章开头提到的WaterMark软件
九、盲水印(多图)
解释:适合于多张图片最后合成一个图片的使用BlindWaterMark脚本
安装依赖:
pip install opencv-python
pip install matplotlib
合成
python bwm.py encode hui.png wm.png hui_with_wm.png
python bwm.py encode A图 B图 生成的图片路径
python2版本使用bwm.py文件
python3版本把bwm.py改为bwmforpy3.py
提取
python bwm.py decode hui.png hui_with_wm.png wm_from_hui.png
python bwm.py decode A图 B图 生成的图片路径
python2版本使用bwm.py文件
python3版本把bwm.py改为bwmforpy3.py
补充
1.文件头尾
文件 | 文件头hex | 文件头ascii | 文件尾 |
---|---|---|---|
PNG | 89 50 4e 47 0d 0a 1a 0a | ‰ P N G | AE 42 60 82 |
GIF | 47 49 46 38 | G I F 8 | 00 3B |
BMP | 42 4D 36 0C 30 | B M 6 0 | |
JPG | ff d8 ff e0 00 10 4a 46 49 46 | ÿ Ø ÿ à J F I F | FF D9 |
pyc | 03 F3 0D 0A | ó | |
ZIP | 50 4B 03 04 | P K | 50 4B |
RAR4 | 52 61 72 21 1A 07 00 | R a r ! | C4 3D HEAD_TYPE |
RAR5 | 52 61 72 21 1A 07 01 00 | R a r ! | 1D 77 56 51 HEAD_SIZE HEAD_TYPE |
7Z | 37 7A BC AF 27 1C | 7 z ¼ ¯ ’ | |
Wav | 52 49 46 46 XX XX XX XX 57 41 56 45 66 6D 74 20 | RIFF ™WAVE |
2.压缩文件特征
解释:用010editor打开压缩文件,如果看到里面出现文件名或其它文本数据,很有可能其就是压缩文件,一般可以尝试zip和rar两种