ImageStrike:一个图形界面跑完 17 种图片隐写分析
【免费下载链接】ImageStrikeImageStrike是一款用于CTF中图片隐写的综合利用工具项目地址: https://gitcode.com/gh_mirrors/im/ImageStrike
拿到一道图片隐写题,你大概经历过这样的流程:steghide 一个环境、blindwatermark 一个库、GIF 帧分离再写段脚本,一个个装依赖、一个个记参数,折腾到最后题目都快被队友做了。ImageStrike 把 17 种图片隐写分析方法收进同一个 PyQT5 界面:下拉框选方法、输入框填路径、点 Pwn 出结果。
ImageStrike 是什么
ImageStrike 是一款面向 CTF 图片隐写题目的图形化分析工具。它的使用者主要是做 Misc 方向的 CTF 选手和刚入门的新手:不用逐个安装、逐个记忆各工具用法,在同一个界面里把常见手段过一遍。
和散装的单点工具相比,它把 Python 能跑的方法(盲水印、GIF 帧分离、RGB 转图片)直接内置,跑不了的(Steghide、F5、Foremost)则随仓库附带工具包,由程序帮你调用——你只管在界面里填参数。工具目前默认面向 Windows 环境。
ImageStrike 安装与启动步骤
git clone https://gitcode.com/gh_mirrors/im/ImageStrike cd ImageStrike python ImageStrike.py工具运行时会自己创建输出用的 imgs 目录,无需手动建。Windows 用户若程序起不来,先装好 Visual C++ 2013 运行库(README 中有说明);用到 F5 功能时还需要本地 java 环境。
按任务拆功能:每道题该选哪个模式
| 对比项 | ImageStrike | 散装的单点工具 |
|---|---|---|
| 盲水印提取 | 界面选 Python2/3 版本,结果直接显示 | 单独装库 + 自己写脚本 |
| Steghide | 随仓库带工具,界面填密码 | 单独部署并记命令行参数 |
| F5 隐写 | 界面填图和密码 | 需自己配 java 环境跑 |
PNG改宽高:把被改坏尺寸的图修回来
拿到一张打不开、或打开后宽高对不上的 PNG?选「PNG改宽高」,把文件路径填进 Img1,点 Pwn,工具会穷举宽高组合并用 CRC32 校验找回真实尺寸,生成修复后的imgs/result6.png,右侧窗口可直接查看。
盲水印提取:从两张图里捞回隐藏的水印
选「盲水印(Python2)」或「盲水印(Python3)」,Img1 填原图路径、Img2 填嵌了水印的图路径,点 Pwn 即可提取隐藏水印。两种选项分别对应 Python2、Python3 两套算法版本,提取算法取自开源的 blindwatermark 项目。
GIF帧分离:把动画图逐帧拆开看
有些题把内容藏在 GIF 的某一帧里。选「Gif帧分离」,点 Pwn 后动画被逐帧拆成imgs/gif/frame1.png、frame2.png……逐帧翻一遍,藏帧就露出来了。
RGB与二进制转图片:把数值还原成能看见的图
选「RGB -> 图片」,Img1 填一个 txt,每行三组数(如255 255 255),点 Pwn 后数值被还原成图片imgs/result12.jpg;选「二进制 -> 黑白矩阵」,把 txt 里只有 0 和 1 的序列还原成一张黑白矩阵图。
Steghide与F5提取:带密码的隐写内容交给自带工具包
这两项不用你手动敲命令:Steghide 直接调用仓库自带的 steghide 工具,F5 调用tools/F5/下的 Java 程序。图片路径填 Img1,密码填 Img2,提取结果写入tools/F5/output.txt并显示在 info 面板。
深入一个功能:PNG改宽高的CRC32穷举是怎么跑的
现象:题目给的 PNG 打不开,或打开后宽高明显不对。原因是文件头部 IHDR 块的宽高字段被改过,PNG 规定 IHDR 块尾的 CRC32 校验必须和块内容一致,改完字段却没人去重算校验和,看图软件就会报格式错误。图片数据本身没坏。
原理:PNG 把宽、高各存成 4 字节无符号整数,IHDR 块尾存了这段内容的 CRC32。只要找到一对宽高,能算出和原文件一致的校验和,就是原始尺寸。
工具内部做的事:从原文件读出 IHDR 块类型和颜色类型字节,然后穷举 1~1000 的宽、高组合,每对都拼出新的 IHDR 内容算一次 CRC32,等于就停:
for w in range(1, 1000): for h in range(1, 1000): data = data_ihdr_flag + pack('>i', w) + pack('>i', h) + data_color if (crc32(data) & 0xffffffff) == crc32key: # 写回修复后的文件 imgs/result6.png新手高频问题解答
问:F5 选项点了没反应,是 bug 吗?答:F5 依赖本地 java 环境(程序会调用tools/F5/里的 java 类)。没装 java 时该项会执行失败,装上再试即可。
问:Windows 上弹出缺 Visual C++ 2013 运行库的报错怎么办?答:按 README 的提示安装 Visual C++ 2013 运行库后重新运行程序。
问:结果文件都去哪找?答:各功能的输出统一放在 imgs 目录(如 PNG 修复出result6.png、GIF 分离出imgs/gif/frameN.png),也有写在工具自身输出文件里的(如tools/F5/output.txt),info 面板会同步显示关键结果。
问:加载图片后还能顺手做什么?答:在右侧显示窗口上右键,可以直接对当前图执行二维码扫描、图片反相,或打开图片所在目录,不用来回切路径。
开始用它过一遍图片题
ImageStrike 把 17 种图片隐写分析方法收进一个界面,选模式、填路径、点 Pwn,结果就在眼前。现在就去 clone 仓库,运行python ImageStrike.py,拿一道题练练手。
【免费下载链接】ImageStrikeImageStrike是一款用于CTF中图片隐写的综合利用工具项目地址: https://gitcode.com/gh_mirrors/im/ImageStrike
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考