当前位置: 首页 > news >正文

OutGuess 安装与问题排查指南(Kali Linux 环境)

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 协议兼容性问题。

解决

  1. 改用 ZIP 包下载(见「步骤 1 - 方式 1」);

  2. 或用 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」

原因

  1. 未执行 sudo make install,可执行文件未放入系统 PATH;

  2. 手动编译后未将 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
http://www.wxhsa.cn/company.asp?id=3718

相关文章:

  • 拓展操作码举例
  • TryHackMe | Cicada-3301 Vol:1
  • 完整教程:Word添加图/表题注
  • [MCP][01]简介与概念
  • CF819B Mister B and PR Shifts
  • 第一次自我介绍
  • 在Linux环境部署Flask应用并启用SSL/TLS安全协议
  • 0127_责任链模式(Chain of Responsibility)
  • 洛枫娜娜米讨厌数学……?
  • Spatial 语言核心概念简介
  • Redis数据库的五类核心数据结构
  • RAG 个人知识库 向量查找原理
  • css-1
  • Java-JDK8新特性
  • 解决MySQL ONLY_FULL_GROUP_BY 错误的方案
  • 博客园美化
  • spatial 一个芯片设计语言的简介 scala dsl 并行支持 -1
  • NOIP备考
  • NVIDIA GPGPU 访存通路设计调研
  • 用 Java 和 Tesseract 实现验证码图像识别
  • AGC003D
  • Java 实现验证码图像识别与处理流程详解
  • 图论杂题。
  • 暑假训练小结
  • 初识python:一些基础的知识(函数)
  • Java并发编程(3)
  • 斐波那契子序列
  • [豪の学习笔记] 软考中级备考 基础复习#10
  • 题解:CF2137D Replace with Occurrences
  • 题解:CF2137C Maximum Even Sum