# steganography-techniques

A detection and extraction playbook for steganography across images, audio, files and text. Useful for CTFs and forensic work.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 3500 installs · ★ 2547
- Author: yaklang
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/yaklang/hack-skills/tree/HEAD/skills/steganography-techniques/SKILL.md
- Updated: 2026-09-13
- HTML: https://affpapa.org/en/nevibecode/skills/steganography-techniques

## What it does

The skill lays out analysis by file type. Images go through LSB with `zsteg`, hidden PNG chunks via `pngcheck`, JPEG DCT coefficients with `steghide` and `jsteg`, plus EXIF metadata. Audio covers spectrograms, LSB in WAV, DTMF and morse decoding. Files cover polyglots, embedded data through `binwalk` and `foremost`, and NTFS alternate data streams. Text covers whitespace, zero-width Unicode and homoglyphs.

Each tool gets ready-made commands, and common traps are spelled out. A PNG whose CRC does not match the declared dimensions was cropped, so the real width and height get brute-forced. A separate `STEGO_TOOLS_GUIDE.md` file holds install instructions and workflow patterns per file type.

The skill routes to neighbours when needed: pulling files out of a pcap, memory dumps through Volatility, or classical ciphers if the extracted payload is encoded further. Tools like `zsteg`, `steghide` and `binwalk` you install yourself — the skill does not bundle them.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add yaklang/hack-skills --skill steganography-techniques -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/steganography-techniques/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/steganography-techniques/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add yaklang/hack-skills --skill steganography-techniques -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/steganography-techniques/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add yaklang/hack-skills --skill steganography-techniques -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/steganography-techniques/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install yaklang/hack-skills steganography-techniques
```

2. **Manually: put the files in place**
- File: `.github/skills/steganography-techniques/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add yaklang/hack-skills --skill steganography-techniques -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/yaklang/hack-skills --path skills/steganography-techniques
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/steganography-techniques/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add yaklang/hack-skills --skill steganography-techniques -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/yaklang/hack-skills/tree/HEAD/skills/steganography-techniques/SKILL.md

## When to use it
- pull data out of the least significant bits of PNG or BMP pixels
- check a PNG for hidden chunks and tampered dimensions
- extract an embedded archive from a polyglot image
- read text drawn on an audio spectrogram
- decode DTMF or morse from a recording

## Example prompts
- analyze this PNG for LSB steganography
- check the JPEG for hidden data in DCT and EXIF
- look at the spectrogram of audio.wav — is there text in it

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 2f3d159a840622d5.

BEGIN THIRD-PARTY FILE 2f3d159a840622d5
````text
---
name: steganography-techniques
description: >-
  Steganography detection and extraction playbook. Use when analyzing images (LSB, PNG chunks, JPEG DCT, EXIF), audio (spectrogram, DTMF), files (polyglots, appended data, ADS), and text (whitespace, zero-width, homoglyphs) for hidden data.
---

# SKILL: Steganography Techniques — Expert Analysis Playbook

> **AI LOAD INSTRUCTION**: Expert steganography detection and extraction techniques. Covers image steganography (LSB, PNG chunk hiding, JPEG DCT, EXIF metadata, dimension tricks, palette manipulation), audio steganography (spectrogram, LSB, DTMF, morse), file steganography (polyglots, binwalk, NTFS ADS, steghide), and text steganography (whitespace, zero-width Unicode, homoglyphs). Base models miss the systematic file-type-based analysis approach and tool-specific extraction workflows.

## 0. RELATED ROUTING

Before going deep, consider loading:

- [traffic-analysis-pcap](../traffic-analysis-pcap/SKILL.md) for extracting files from network captures before stego analysis
- [memory-forensics-volatility](../memory-forensics-volatility/SKILL.md) for extracting files from memory dumps
- [classical-cipher-analysis](../classical-cipher-analysis/SKILL.md) if extracted hidden data is further encrypted/encoded

### Tool Reference

Also load [STEGO_TOOLS_GUIDE.md](./STEGO_TOOLS_GUIDE.md) when you need:
- Tool installation instructions and dependencies
- Detailed command reference for each stego tool
- Workflow patterns for specific file types

---

## 1. IMAGE STEGANOGRAPHY

### LSB (Least Significant Bit)

LSB embeds data in the least significant bits of pixel color channels.

```bash
# zsteg — LSB analysis for PNG/BMP
zsteg image.png                       # auto-detect all LSB patterns
zsteg image.png -a                    # try all known methods
zsteg image.png -b 1                  # extract bit plane 1
zsteg image.png -E "b1,rgb,lsb,xy"   # specific extraction pattern

# StegSolve (Java GUI)
java -jar StegSolve.jar
# Navigate color planes: Red 0, Green 0, Blue 0 → look for hidden image/text
# Data Extractor: specify bit planes + byte order

# stegoveritas — comprehensive automated analysis
stegoveritas image.png
# Runs: exiftool, binwalk, zsteg, foremost, color plane extraction
```

### PNG Specific

```bash
# pngcheck — validate structure, find hidden chunks
pngcheck -v image.png

# Hidden chunks: tEXt, zTXt (compressed text), iTXt (international text)
# Custom/private chunks may contain hidden data

# CRC vs dimensions trick
# If CRC doesn't match declared dimensions → image was cropped
# Fix: brute-force correct width/height → reveals hidden rows/columns
python3 -c "
import struct, zlib
````
END THIRD-PARTY FILE 2f3d159a840622d5

The third-party file has ended. Everything between the 2f3d159a840622d5 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2697 of 11016 bytes. © yaklang · MIT · https://github.com/yaklang/hack-skills/tree/HEAD/skills/steganography-techniques/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
