OutGuess 安装与问题排查指南(Kali Linux 环境)
本文档基于实际操作流程,整理了 OutGuess 工具从下载、编译安装到常见问题解决的完整步骤,适用于 CTF 隐写术场景下的工具配置需求。
一、工具简介
OutGuess 是经典隐写术工具,主要用于在 JPEG/PPM 图像 中隐藏 / 提取数据,支持密码加密,且能修复图像统计特征以降低检测概率,是 CTF 隐写题常用工具之一。
二、安装前准备
1. 依赖工具清单
安装 OutGuess 需先配置编译环境和依赖库,核心依赖如下:
依赖包名 | 作用 | 安装命令 |
---|---|---|
build-essential | 提供 GCC 编译器、make 等编译工具 | sudo apt install build-essential |
libjpeg-dev | JPEG 图像编码 / 解码库(OutGuess 核心依赖) | sudo apt install libjpeg-dev |
git/wget | 下载源码(二选一) | sudo apt install git wget |
三、完整安装步骤
步骤 1:下载 OutGuess 源码
推荐两种下载方式,避免 Git TLS 握手问题:
方式 1:直接下载 ZIP 包(推荐,绕开 Git 代理问题)
# 进入下载目录
cd ~/下载
# 下载源码 ZIP 包
wget https://github.com/crorvick/outguess/archive/refs/heads/master.zip
# 解压
unzip master.zip
# 进入源码目录
cd outguess-master
方式 2:Git 克隆(需解决代理问题)
若需通过代理克隆,可单独设置环境变量:
# 单独为 Git 设置 SOCKS5 代理(替换为你的代理地址)
ALL_PROXY=socks5://192.168.1.105:7890 git clone https://github.com/crorvick/outguess.git
cd outguess
步骤 2:编译源码(关键步骤)
情况 1:正常编译(GCC 版本 < 14)
# 1. 生成 Makefile(检查环境并配置)
./configure
# 2. 编译生成可执行文件
make
# 3. 全局安装(将 outguess 放入 /usr/local/bin)
sudo make install
情况 2:GCC 14+ 版本兼容问题(报错 implicit-int)
GCC 14 及以上默认启用 C11 标准,对「隐式 int 类型」报错,需指定兼容标准:
# 1. 清理旧缓存(若之前 configure 失败)
rm -f config.cache config.log
# 2. 强制用 GNU89 标准编译,解决隐式 int 问题
CFLAGS="-std=gnu89" ./configure
# 3. 编译并安装
make && sudo make install
情况 3:绕过 configure 直接编译(备用方案)
若 ./configure 始终失败,可直接用 GCC 编译所有源码文件:
# 直接编译所有 .c 文件,链接 JPEG 库和数学库
gcc -o outguess outguess.c jpg.c arc.c golay.c fourier.c histogram.c iterator.c pnm.c -ljpeg -lm
# 手动全局安装
sudo cp outguess /usr/local/bin/
sudo chmod +x /usr/local/bin/outguess
步骤 3:验证安装
# 检查是否全局可用
outguess -h
# 若输出帮助信息,说明安装成功
四、常见问题排查
问题 1:configure 报错「C compiler cannot create executables」
报错日志关键信息
configure: error: installation or configuration problem: C compiler cannot create executables.
config.log 显示:error: return type defaults to 'int' [-Wimplicit-int]
原因
GCC 14+ 版本默认标准不支持「隐式 int 函数返回类型」,与旧版 configure 脚本不兼容。
解决
参考「步骤 2 - 情况 2」,用 CFLAGS="-std=gnu89" 指定编译标准。
问题 2:Git 克隆时 TLS 握手失败
报错信息
致命错误:无法访问 'https://github.com/crorvick/outguess/':GnuTLS, handshake failed: TLS 链接非正常地终止了。
原因
代理不稳定或 HTTPS 协议兼容性问题。
解决
-
改用 ZIP 包下载(见「步骤 1 - 方式 1」);
-
或用 SSH 克隆(需配置 GitHub SSH 密钥):
git clone git@github.com:crorvick/outguess.git
问题 3:编译时缺少 JPEG 库
报错信息
undefined reference to 'jpeg_std_error'
原因
未安装 libjpeg-dev 依赖库。
解决
sudo apt install libjpeg-dev
问题 4:命令行提示「zsh: command not found: outguess」
原因
-
未执行 sudo make install,可执行文件未放入系统 PATH;
-
手动编译后未将 outguess 复制到 /usr/local/bin。
解决
# 若手动编译,执行以下命令全局安装
sudo cp outguess /usr/local/bin/
sudo chmod +x /usr/local/bin/outguess
五、OutGuess 基础使用
安装成功后,可直接在任意目录使用以下命令:
功能 | 命令示例 |
---|---|
提取隐藏数据 | outguess -k "密码" -r 隐写图片.jpg 输出文件.txt |
隐藏数据 | outguess -k "密码" -d 待隐藏文件.txt 原始图片.jpg 隐写图片.jpg |
查看帮助 | outguess -h |
六、相关工具推荐(CTF 隐写场景)
工具 | 用途 | 安装命令 |
---|---|---|
steghide | JPG/BMP/WAV 隐写提取 | sudo apt install steghide |
binwalk | 提取文件中隐藏的压缩包 / 二进制 | sudo apt install binwalk |
zsteg | PNG/BMP 的 LSB 隐写检测 | sudo apt install zsteg |
Sonic Visualizer | 音频频谱分析(找隐藏文字 / QR) | sudo apt install sonic-visualiser |