steganography-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@steganography-mcp Analyze image.jpg for steganographic content"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
The Problem
Steganography is the art of hiding data in plain sight — inside images, audio files, documents, and even Unicode text. It is used in CTF competitions, digital forensics investigations, covert communication channels, and malware payloads. Detecting it requires a combination of statistical analysis, format-specific parsing, entropy measurement, and domain expertise.
Traditional steganography analysis workflow:
detect image stego -> zsteg + stegsolve (2 tools, Ruby + Java)
chi-square analysis -> custom Python script
RS analysis -> custom MATLAB/Python code
JPEG DCT forensics -> stegdetect (abandoned C tool from 2004)
extract LSB data -> zsteg + steghide + openstego (3 tools)
audio steganography -> Audacity manual + custom scripts
zero-width text detection -> web-based tools + manual inspection
file forensics / binwalk -> binwalk + foremost + xxd (3 tools)
EXIF metadata -> exiftool (Perl dependency)
encoding detection -> CyberChef web UI + manual guessing
─────────────────────────────────
Total: 10+ tools, 5+ languages, hours of manual correlationsteganography-mcp gives your AI agent 128 tools across 17 categories via the Model Context Protocol. The agent performs image steganalysis, advanced JPEG forensics (F5/JSteg/OutGuess/PVD detection), BPCS analysis, video & GIF steganography, network covert channel detection, MP3 stego, spread spectrum watermark detection, archive stego, QR code analysis, audio analysis, text steganography detection, file forensics, document analysis, and encoding identification — all in a single conversation, all running 100% locally with zero dependencies on external services.
With steganography-mcp:
You: "Analyze this CTF challenge image for hidden data"
Agent: -> img_detect: Chi-square p=0.0001 (LSB embedding detected),
RS analysis estimates 42% embedding rate, entropy anomaly
in lower-right quadrant
-> img_lsb_extract: Extracted 847 bytes from RGB LSBs
-> crypto_detect: Extracted data is Base64-encoded
-> crypto_decode: Decoded to "FLAG{hidden_in_plain_sight_2024}"
-> img_known_tools: Signature match for OpenStego
"The image contains LSB steganography embedded with OpenStego.
Chi-square test confirms LSB replacement in all three RGB
channels with 42% embedding rate. The hidden payload is
Base64-encoded and decodes to the flag:
FLAG{hidden_in_plain_sight_2024}"Related MCP server: OSINT MCP Server
How It's Different
Most steganography tools are single-purpose utilities. steganography-mcp gives your AI agent the ability to reason across all steganography techniques simultaneously.
Quick Start
Option 1: npx (no install)
npx -y steganography-mcpAll 128 tools work immediately. No API keys. No configuration. 100% offline.
Option 2: bunx (faster)
bunx steganography-mcpOption 3: Clone
git clone https://github.com/badchars/steganography-mcp.git
cd steganography-mcp
bun installConnect to your AI agent
# With npx
claude mcp add steganography -- npx -y steganography-mcp
# With local clone
claude mcp add steganography -- bun run /path/to/steganography-mcp/src/index.tsAdd to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"steganography": {
"command": "npx",
"args": ["-y", "steganography-mcp"]
}
}
}Same JSON config format. Point the command to npx -y steganography-mcp or your local installation path.
Start analyzing
You: "Check this image for hidden data"That's it. The agent runs chi-square analysis, RS analysis, entropy mapping, metadata extraction, appended data detection, and tool signature scanning — automatically.
What The AI Can Do
CTF Challenge Solver
You: "Solve this CTF steganography challenge — the image is at challenge.png"
Agent: -> img_detect: Chi-square steganalysis detects LSB embedding
(p=0.00012), RS analysis estimates 38% embedding rate,
entropy anomaly at blocks (12,4)-(15,8)
-> img_lsb_extract: Extracted 1,247 bytes from RGB channel LSBs
-> crypto_detect: Data matches Base64 pattern (confidence: 0.95)
-> crypto_decode: "Q1RGe3N0M2cwX21hc3Rlcn0=" -> "CTF{st3g0_master}"
-> img_known_tools: OpenStego signature detected in PNG chunks
"Found the flag: CTF{st3g0_master}
The image uses LSB steganography embedded by OpenStego.
The payload was Base64-encoded in the RGB least significant
bits with a 38% embedding rate."Digital Forensics Investigation
You: "Analyze suspect.png and suspect.wav for covert communication"
Agent: -> img_detect: No LSB stego detected, but appended data found
(12,847 bytes after PNG IEND marker)
-> file_identify: Appended data starts with ZIP signature (PK)
-> img_metadata: PNG tEXt chunk contains unusual key "comm"
with Base64 value
-> audio_detect: WAV file has LSB chi-square anomaly (p=0.003)
-> audio_silence: 3 silent sections with active LSBs detected
-> audio_lsb_extract: Extracted 2,048 bytes of hidden data
"Both files contain hidden data:
1. suspect.png has a ZIP archive appended after the PNG EOF
marker, plus a Base64-encoded message in metadata
2. suspect.wav contains LSB steganography, specifically in
silent sections — a strong indicator of intentional hiding.
Recommend extracting the ZIP and analyzing WAV payload."Zero-Width Text Detection
You: "This email looks normal but might have hidden text"
Agent: -> text_detect: 847 zero-width characters detected between
visible characters
-> text_zwc_detect: ZWSP (342), ZWNJ (505) found at 127
positions throughout the text
-> text_zwc_extract: Binary decoding yields "EXFIL-ROUTE-7"
-> text_invisible_scan: 3 additional invisible Unicode chars
(U+2060, U+FEFF) found in header section
"The email contains a hidden message encoded with zero-width
characters: 'EXFIL-ROUTE-7'. 847 invisible characters are
dispersed throughout the visible text using ZWSP/ZWNJ binary
encoding. Additionally, 3 Word Joiner and BOM characters
were found in the header — likely metadata artifacts."JPEG Forensic Analysis
You: "Is this JPEG image authentic or has it been tampered with?"
Agent: -> jpeg_structure: 14 markers parsed, normal JFIF structure
-> jpeg_double_compression: Double compression DETECTED —
blocking artifact score 0.73, quantization anomaly ratio 0.81
-> jpeg_quantization: Quality ~75 (luminance), but residual
patterns suggest original was quality ~92
-> jpeg_exif_deep: EXIF says "iPhone 14 Pro" but Software
field says "Adobe Photoshop 25.0"
-> jpeg_thumbnail_compare: Thumbnail dimensions do NOT match
main image (thumbnail: 4032x3024, main: 2048x1536)
"This JPEG has been tampered with. Evidence:
1. Double compression detected — the image was decoded and
re-encoded at lower quality (original ~92, current ~75)
2. EXIF claims iPhone 14 Pro but software field reveals
Photoshop editing
3. Thumbnail is from the original 4032x3024 capture but
the main image was resized to 2048x1536
All three findings independently confirm post-capture
modification."Tools Reference (128 tools)
Category Overview
Category | Tools | Description |
14 | LSB detection, chi-square, RS analysis, entropy mapping, bit planes, histogram, metadata, tool signatures | |
7 | DCT histogram, double compression, quantization tables, deep EXIF, thumbnail forensics, comment analysis | |
7 | F5, JSteg, OutGuess, PVD detection, sliding window chi-square, crop-recalibrate steganalysis, tool compatibility | |
7 | WAV LSB detection, spectrum analysis, silence region analysis, echo hiding, metadata extraction | |
10 | Zero-width chars, whitespace encoding, invisible Unicode, homoglyphs, acrostics, Unicode analysis | |
10 | Magic bytes, polyglot detection, embedded files, appended data, entropy, hex dump, strings, headers | |
5 | PDF hidden content, PDF metadata, PDF streams, HTML hidden content, XML metadata | |
7 | Encoding detection, multi-format decoder, frequency analysis, entropy, XOR brute-force, hash ID, cipher patterns | |
8 | AVI frame LSB, inter-frame analysis, frame comparison, metadata, structure, EOF data | |
8 | Palette LSB, LZW sub-block entropy, comment extensions, application extensions, frame analysis | |
8 | PCAP covert channels, IP/TCP header analysis, ICMP payloads, DNS tunneling, HTTP headers, timing | |
7 | ID3 hidden data, frame analysis, padding manipulation, sample analysis, metadata, structure | |
5 | DFT magnitude spectrum, autocorrelation, watermark detection, noise floor analysis, patchwork detection | |
5 | Bit-plane complexity segmentation, complexity mapping, threshold analysis, data extraction, capacity estimation | |
7 | ZIP slack spaces, extra fields, comments, polyglot detection, structure analysis, metadata | |
7 | EOF injection, metadata injection, whitespace encoding, null cipher, polyglot creation, comment injection, palette embedding | |
6 | QR stego detection, structure analysis, ECC capacity, module analysis, data extraction, comparison |
Tool | Description |
| Auto-detect steganography in an image. Runs chi-square, RS analysis, entropy, metadata, appended data, and tool signature checks. Returns a comprehensive JSON report |
| Statistical LSB steganography detection. Runs chi-square and sample pair analysis on each color channel independently |
| Extract hidden data from image LSBs. Extracts bits from specified channels and bit plane, attempts UTF-8 decode, and shows hex dump |
| Embed a message into an image using LSB steganography. Reads a PNG file, embeds the message into the least significant bits, and writes a new PNG file |
| Extract and visualize a specific bit plane from an image channel. Shows dimensions, percentage of 1-bits, and an ASCII art preview |
| Chi-square steganalysis attack on each color channel independently. Detects LSB replacement by testing whether adjacent pixel value pairs are equalized |
| RS (Regular-Singular) steganalysis using the Fridrich-Goljan-Du method. Analyzes pixel groups to estimate LSB embedding rate per channel |
| Generate a pixel value histogram with anomaly detection. Detects Pairs-of-Values (PoV) anomalies that indicate LSB steganography |
| Per-block entropy analysis of an image. Splits the image into blocks and calculates Shannon entropy per block, flagging high-entropy regions |
| Deep metadata extraction from an image. For PNG: text chunks, chunk list, IHDR info. For JPEG: EXIF, comments, quantization tables, marker list |
| Detect and extract data appended after the image EOF marker. Checks for hidden data past PNG IEND, JPEG EOI, or BMP file size boundary |
| Pixel-by-pixel comparison of two images. Reports identical/different pixel counts, max difference, and which channels are affected |
| Per-channel statistical analysis for R, G, B, and A channels. Reports mean, standard deviation, entropy, min, max, and unique value count |
| Scan image file bytes for known steganography tool signatures. Checks against a database of patterns from OpenStego, Steghide, JSteg, F5, and others |
Tool | Description |
| Parse JPEG markers/segments with offsets and sizes. Shows internal structure including all markers, positions, and segment lengths |
| DCT coefficient distribution analysis for steganography detection. Analyzes Y-channel pixel value distribution and SOS entropy data to detect anomalies caused by JSteg, F5, and OutGuess |
| Detect double JPEG compression artifacts. Identifies characteristic blocking artifacts and quantization table anomalies — a common indicator of image tampering or stego embedding |
| Quantization table analysis with quality estimation. Displays all quantization tables in 8x8 grid format and estimates the JPEG quality factor |
| Deep EXIF analysis including GPS coordinates, timestamps, software info, thumbnails, maker notes, and all IFD entries. Flags forensically interesting fields |
| Compare EXIF thumbnail against the main JPEG image. Dimension or content mismatch indicates post-capture modification — a common forensic artifact |
| Extract and analyze JPEG COM (comment) markers. Checks for hidden data patterns, unusually large comments, and high-entropy content |
Tool | Description |
| Auto-detect audio steganography in a WAV file. Runs LSB chi-square, entropy analysis, metadata inspection, and checks for appended data |
| PCM sample LSB statistical analysis. Performs chi-square test on LSBs grouped by value pairs to detect LSB replacement steganography |
| Extract LSB data from audio samples. Reads the least significant bit of each PCM sample and attempts to decode hidden data |
| Spectral analysis for hidden signals in WAV audio. Analyzes sample value distribution, zero-crossing rate, RMS energy per block, and detects anomalous quiet sections |
| Extract metadata from a WAV file including RIFF INFO chunks, format details, and all chunk information |
| Analyze silent sections in WAV audio for hidden data. Finds near-zero sample regions and checks their LSBs — silent sections with active LSBs are a strong stego indicator |
| Echo hiding detection via autocorrelation analysis. Computes normalized autocorrelation at common echo delays. Regular echo patterns indicate steganographic echo hiding |
Tool | Description |
| Auto-detect text steganography. Checks for zero-width characters, whitespace encoding, invisible Unicode, homoglyphs, and unusual patterns |
| Detect zero-width characters (ZWSP, ZWNJ, ZWJ, BOM) in text. Reports positions, counts, and potential encoded message length |
| Decode a zero-width character encoded message. Extracts ZWC chars and decodes binary: ZWSP=0, ZWNJ=1 (attempts both polarities) |
| Embed a secret message into cover text using zero-width characters. Encodes message to binary and maps bits to ZWSP(0)/ZWNJ(1) |
| Detect whitespace encoding in text. Checks each line for trailing whitespace patterns where space=0 and tab=1 might encode binary data |
| Extract a whitespace-encoded message from text. Reads trailing whitespace from each line and decodes space=0/tab=1 binary encoding |
| Scan text for ALL invisible Unicode characters. Checks every character against the full invisible character database and reports positions and names |
| Detect Unicode homoglyph substitutions in text. Identifies non-ASCII characters that visually resemble ASCII letters (Cyrillic a vs Latin a, etc.) |
| Full Unicode character distribution analysis. Categorizes all characters by script block, performs entropy analysis, and detects suspicious script mixing |
| Detect first-letter, first-word, last-letter, last-word, or nth-character patterns (acrostic messages) hidden across lines of text |
Tool | Description |
| File type identification via magic bytes. Reads the file header and matches against a comprehensive database of known file signatures. Checks for extension mismatch |
| Detect polyglot files valid as two or more formats simultaneously. Checks for multiple valid file signatures at different offsets (PDF+ZIP, PNG+PDF, etc.) |
| Scan for embedded files within a binary, similar to binwalk. Searches for known magic byte signatures at every offset to discover hidden or appended files |
| Detect data appended after a file's format-specific EOF marker. Supports PNG (IEND), JPEG (FFD9), BMP, ZIP (EOCD), and PDF (%%EOF) |
| Section-by-section entropy analysis. Calculates Shannon entropy per block and overall, flagging anomalous high-entropy sections |
| ASCII entropy visualization of a file. Renders a text-based bar chart showing entropy levels across the file for visual anomaly detection |
| Extract printable and Unicode strings from binary files. Scans for runs of printable characters and reports them with file offsets. Supports ASCII, UTF-8, UTF-16 |
| Hex dump with ASCII sidebar display. Traditional hex editor format with offset addresses, hex bytes, and printable ASCII representation |
| Deep header and structure analysis for known formats. Parses PNG IHDR, JPEG SOF, BMP info header, ZIP local file headers, and PDF version/metadata |
| Binary diff between two files. Byte-by-byte comparison reporting differences with offsets, percentage identical, and LSB-only difference detection for stego analysis |
Tool | Description |
| Hidden PDF content detection. Scans for JavaScript, auto-actions, OpenAction, hidden annotations, invisible text, embedded files, and other covert content |
| PDF metadata extraction. Parses the /Info dictionary and XMP metadata blocks for forensic attribution and document provenance analysis |
| PDF stream analysis. Locates all stream/endstream blocks, attempts zlib decompression, and reports sizes and entropy for finding hidden data |
| Hidden HTML content detection. Scans for comments, display:none elements, data-* attributes, hidden inputs, base64 content, zero-size elements, and invisible text |
| XML and Office document metadata extraction. Parses Dublin Core, Microsoft Office properties, processing instructions, and other metadata fields |
Tool | Description |
| Auto-detect encoding type of an input string. Tests against all known patterns (Base64, hex, binary, morse, URL encoding, HTML entities, etc.) and returns matches sorted by confidence |
| Multi-format decoder supporting Base64, hex, binary, decimal, octal, URL encoding, ROT13, Base32, Morse code, and HTML entities. Auto mode detects encoding first |
| Character frequency analysis for cryptanalysis. Counts character occurrences, compares to standard English frequency (ETAOINSHRDLU), and calculates Index of Coincidence |
| Shannon entropy calculation and classification for strings. Computes character-level and byte-level entropy, classifying into categories from repeated data to encrypted/random |
| XOR key brute-force for single-byte and multi-byte keys. Tries all 256 single-byte keys and scores by English text probability. Uses IC for multi-byte key length estimation |
| Hash type identification. Matches input against known hash patterns by length and format (MD5, SHA-1, SHA-256, SHA-512, bcrypt, CRC32, NTLM, etc.) |
| Known cipher and encoding pattern detection. Analyzes text for Caesar cipher, substitution cipher, Vigenere, rail fence transposition, Atbash, and reversed text |
Tool | Description |
| F5 steganography detection. Analyzes DCT coefficient histogram for shrinkage at zero and asymmetric distribution around zero |
| JSteg detection. Chi-square test on coefficient value pairs, zero AC coefficient preservation analysis |
| OutGuess detection. First-order histogram smoothness, second-order statistics, inter-block correlation analysis |
| Pixel Value Differencing detection. Horizontal/vertical difference histograms, staircase artifacts at PVD range boundaries |
| Sliding window chi-square analysis. Per-window p-values to detect embedding start/end points and estimate message length |
| Crop-recalibrate steganalysis. Compares original vs cropped image statistics to reveal DCT modifications |
| JPEG stego tool compatibility check. Analyzes markers, quality, encoding type to determine which tools (JSteg, F5, OutGuess, steghide, JPHS) could have been used |
Tool | Description |
| Auto-detect steganography in AVI files. Runs LSB analysis on frames, checks for appended data, analyzes frame size variance |
| LSB analysis of a specific video frame. Extracts raw pixel data, checks LSB balance/distribution and entropy |
| Extract LSB bits from specified frames. Assembles into byte stream with hex dump and text preview |
| Compare two frames byte-by-byte. Reports MSE, PSNR, max difference, and LSB-only modification detection |
| Analyze idx1 index entries for keyframe vs delta frame distribution, flag histogram, and size statistics |
| Extract AVI metadata: dimensions, FPS, codec, stream details, duration, audio presence |
| Recursively visualize the RIFF/LIST chunk tree with fourCC codes, offsets, and sizes |
| Detect and analyze data appended after the RIFF container boundary |
Tool | Description |
| Auto-detect GIF steganography. Analyzes color table LSBs, appended data, comment extensions, animation anomalies |
| Palette analysis: sort order, duplicates, unused entries, luminance distribution, LSB-differing adjacent pairs |
| Extract LSB from each R/G/B channel of the global color table. Per-channel balance and chi-square tests |
| Multi-frame animation analysis: per-frame size, delay times, disposal methods, local color tables |
| Extract all comment extensions with text content, entropy, printable ratio, and hex dump |
| Application extension analysis. Parses NETSCAPE loop counts, detects non-standard extensions |
| LZW sub-block entropy analysis per frame. Detects anomalous sub-block sizes and cross-frame entropy outliers |
| Visualize complete GIF block structure: header, color tables, extensions, image descriptors, trailer |
Tool | Description |
| Auto-detect network steganography in PCAP files. Runs IP covert field, ICMP payload, DNS tunneling, and timing analysis |
| IP header covert field analysis. TTL patterns, IP identification entropy, TOS/DSCP usage |
| TCP seq/ack number analysis. ISN analysis, per-flow sequence increments, TCP options, window size variability |
| ICMP echo payload analysis. Per-packet entropy, printable content ratio, payload size anomalies |
| DNS tunneling detection. Subdomain length distribution, per-label entropy, TXT record usage, query frequency |
| HTTP header covert channel analysis. Custom headers, X-header entropy, cookie value entropy |
| Inter-packet timing analysis. Interval statistics, timing covert channel detection via binary splitting |
| PCAP statistics summary. Protocol distribution, top IP pairs, port usage, throughput |
Tool | Description |
| Auto-detect MP3 steganography. Checks ID3 padding, PRIV frames, pre-audio gaps, trailing data, bitrate anomalies |
| Frame header analysis. Bitrate distribution, padding bit entropy, frame size statistics, channel mode consistency |
| ID3v1/v2 hidden data analysis. APIC, PRIV, GEOB frames, unknown frame IDs, padding content inspection |
| Bit reservoir/padding manipulation detection. Pre-audio gaps, inter-frame gaps with per-gap entropy |
| Statistical analysis of frame sizes. Distribution histogram, entropy of sizes and deltas, outlier detection |
| Full MP3 metadata extraction. Audio properties, ID3v2 frames with decoded text, file structure layout |
| Frame structure visualization. Per-frame table, bitrate map, and padding bit map |
Tool | Description |
| DFT magnitude spectrum analysis. Spectral flatness, frequency band energy, dominant frequencies for hidden signal detection |
| Autocorrelation-based detection. Finds periodic embedding patterns, distinguishes natural peaks from suspicious ones |
| Statistical watermark detection. Block-based pixel variance comparison, checkerboard patterns, quadrant uniformity |
| Noise floor embedding detection. Laplacian noise estimation, smooth vs textured region noise comparison |
| Patchwork watermark detection. Multi-seed PRNG group splitting, statistical hypothesis testing |
Tool | Description |
| Auto-detect BPCS embedding. Complexity analysis across all 24 bit planes (8 planes x 3 channels), MSB/LSB trend analysis |
| Full complexity map with ASCII spatial visualization and distribution histograms for all 8 bit planes |
| Threshold sweep analysis from 0.05 to 0.95. Finds optimal BPCS boundary and suspicious complexity patterns |
| Extract data from complex regions. Gathers bits above threshold in raster-scan order, analyzes for structure |
| Estimate BPCS embedding capacity across all channels and planes, accounting for conjugation map overhead |
Tool | Description |
| Auto-detect archive steganography. Checks slack spaces, prepended/appended data, unusual extra fields, comments |
| ZIP entry structure analysis. Lists all local file headers with offsets, sizes, compression methods, CRC-32 |
| Parse extra fields from local and central directory entries. Flags unknown header IDs as potential hiding spots |
| Extract archive-level and per-file comments with entropy analysis and hex dumps |
| Identify gaps between ZIP entries with size, entropy, printable ratio, and hex dumps |
| Detect if ZIP has prepended/appended data valid as another format (PDF, PNG, ELF, PE, etc.) |
| Summary of file count, compression ratios, timestamps, version info, encryption flags |
Tool | Description |
| Append data after a file's EOF marker. Takes file_path, data, and output_path |
| Inject data into metadata fields. PNG tEXt chunks, JPEG COM segments, generic append |
| Encode data in trailing whitespace (space=0, tab=1) on text file lines |
| Generate null cipher text. First-letter mode or nth-word arrangement |
| Concatenate two files to create a polyglot valid as both formats |
| Inject into format-specific comment fields (PNG tEXt, JPEG COM, GIF Comment Extension) |
| Embed data in palette LSBs for indexed PNG (PLTE) and GIF (Global Color Table) |
Tool | Description |
| Detect steganography in QR code images. Pixel distribution bimodality, LSB randomization, non-pure module values |
| QR structure analysis. Finder patterns, version estimation, module size, grid dimensions |
| Error correction capacity analysis. ECC levels L/M/Q/H, steganographic capacity from sacrificing ECC codewords |
| Per-module pixel variance analysis. Clean QR codes should have zero intra-module variance |
| Extract data region pixels excluding function patterns. Module values, binary string, entropy statistics |
| Compare two QR code images. Data region vs function pattern differences, LSB-only modification detection |
CLI Usage
# Show help
npx -y steganography-mcp --help
# List all 128 tools with descriptions
npx -y steganography-mcp --list
# Detect steganography in an image
npx -y steganography-mcp --tool img_detect '{"file_path":"challenge.png"}'
# Extract hidden message from LSBs
npx -y steganography-mcp --tool img_lsb_extract '{"file_path":"stego.png"}'
# Chi-square steganalysis
npx -y steganography-mcp --tool img_chi_square '{"file_path":"suspect.png"}'
# RS analysis (Fridrich-Goljan-Du method)
npx -y steganography-mcp --tool img_rs_analysis '{"file_path":"suspect.png"}'
# JPEG double compression detection
npx -y steganography-mcp --tool jpeg_double_compression '{"file_path":"photo.jpg"}'
# Deep EXIF analysis
npx -y steganography-mcp --tool jpeg_exif_deep '{"file_path":"photo.jpg"}'
# Audio steganography detection
npx -y steganography-mcp --tool audio_detect '{"file_path":"message.wav"}'
# Detect zero-width character encoding
npx -y steganography-mcp --tool text_zwc_detect '{"text":"suspicious text here"}'
# Embed a hidden message with zero-width characters
npx -y steganography-mcp --tool text_zwc_embed '{"text":"cover text","message":"secret"}'
# Identify file type and detect polyglots
npx -y steganography-mcp --tool file_polyglot '{"file_path":"suspicious.pdf"}'
# Scan for embedded files (binwalk-style)
npx -y steganography-mcp --tool file_embedded '{"file_path":"mystery.bin"}'
# Entropy visualization
npx -y steganography-mcp --tool file_entropy_visual '{"file_path":"data.bin"}'
# Auto-detect encoding
npx -y steganography-mcp --tool crypto_detect '{"input":"aGVsbG8gd29ybGQ="}'
# XOR brute-force
npx -y steganography-mcp --tool crypto_xor '{"input":"4f5243484e"}'
# Detect cipher patterns
npx -y steganography-mcp --tool crypto_patterns '{"input":"Gur dhvpx oebja sbk"}'
# Video steganography detection
npx -y steganography-mcp --tool video_detect '{"file_path":"movie.avi"}'
# GIF palette LSB analysis
npx -y steganography-mcp --tool gif_palette_lsb '{"file_path":"animation.gif"}'
# Network covert channel detection
npx -y steganography-mcp --tool net_dns_tunnel '{"file_path":"capture.pcap"}'
# MP3 hidden data detection
npx -y steganography-mcp --tool mp3_detect '{"file_path":"song.mp3"}'
# F5 JPEG stego detection
npx -y steganography-mcp --tool jpegadv_f5_detect '{"file_path":"suspect.jpg"}'
# BPCS embedding detection
npx -y steganography-mcp --tool bpcs_detect '{"file_path":"image.png"}'
# Archive slack space analysis
npx -y steganography-mcp --tool archive_slack '{"file_path":"archive.zip"}'
# QR code stego detection
npx -y steganography-mcp --tool qr_detect '{"file_path":"qrcode.bmp"}'
# Spread spectrum watermark detection
npx -y steganography-mcp --tool spread_patchwork '{"file_path":"image.png"}'
# Create a polyglot file
npx -y steganography-mcp --tool create_polyglot '{"file1_path":"image.png","file2_path":"secret.zip","output_path":"polyglot.png"}'
# Using Bun (faster startup)
bunx steganography-mcp --tool img_detect '{"file_path":"image.png"}'Use Cases
CTF Challenges
Solve steganography challenges in capture-the-flag competitions. The AI agent can systematically apply all detection techniques — LSB analysis, metadata inspection, appended data, encoding detection, and cipher identification — to find hidden flags in images, audio files, documents, and text.
Digital Forensics
Detect covert communication channels in forensic investigations. Analyze suspect files for hidden data using statistical steganalysis (chi-square, RS analysis), check for data appended after EOF markers, scan for embedded files, and identify steganography tool signatures.
Security Research
Analyze steganography tools and techniques. Compare original and stego images pixel-by-pixel, study DCT coefficient distributions in JPEG stego, measure entropy changes from embedding, and reverse-engineer encoding schemes.
Education
Learn how steganography techniques work. Embed and extract LSB messages, encode text with zero-width characters, visualize bit planes and entropy maps, analyze file structures with hex dumps, and study cipher patterns with frequency analysis.
Incident Response
During incident response, check documents and images for hidden exfiltration channels. Scan PDFs for hidden JavaScript and embedded files, detect zero-width character encoding in emails, identify polyglot files, and analyze suspicious encodings.
Architecture
src/
index.ts # CLI entrypoint (--help, --list, --tool, stdio server)
protocol/
mcp-server.ts # MCP server setup (stdio transport)
tools.ts # Tool registry — all 128 tools assembled here
types/
index.ts # Shared types (ToolDef, ToolContext, ToolResult)
utils/
binary.ts # Binary file reading, hex dump, format detection
stats.ts # Shannon entropy, chi-square, DFT, autocorrelation, BPCS complexity, patchwork test
cache.ts # TTL cache
png-parser.ts # Pure TS PNG parser (IHDR, chunks, pixel data)
jpeg-parser.ts # Pure TS JPEG parser (markers, EXIF, quantization, DCT coefficients)
wav-parser.ts # Pure TS WAV parser (RIFF chunks, PCM samples)
bmp-parser.ts # Pure TS BMP parser (header, pixel data)
avi-parser.ts # Pure TS AVI/RIFF parser (chunks, streams, idx1, frames)
gif-parser.ts # Pure TS GIF89a parser (color tables, extensions, LZW blocks)
pcap-parser.ts # Pure TS PCAP parser (IP/TCP/UDP/ICMP/DNS/HTTP)
mp3-parser.ts # Pure TS MP3 parser (ID3v1/v2, frame headers)
zip-parser.ts # Pure TS ZIP parser (local headers, central directory, extra fields)
image/ # Image Steganalysis tools (14)
jpeg/ # JPEG Analysis tools (7)
jpegadv/ # Advanced JPEG tools (7) — F5, JSteg, OutGuess, PVD
audio/ # Audio Steganalysis tools (7)
text/ # Text & Unicode tools (10)
file/ # File Forensics tools (10)
document/ # Document Analysis tools (5)
crypto/ # Encoding & Crypto tools (7)
video/ # Video Steganography tools (8) — AVI frame analysis
gif/ # GIF Steganography tools (8) — palette, LZW, animation
network/ # Network Steganography tools (8) — PCAP covert channels
mp3/ # MP3 Steganography tools (7) — ID3, padding, frames
spread/ # Spread Spectrum tools (5) — DFT, watermark, patchwork
bpcs/ # BPCS Analysis tools (5) — bit-plane complexity
archive/ # Archive Steganography tools (7) — ZIP slack, extra fields
create/ # Create & Embed tools (7) — EOF inject, polyglot, palette
qrcode/ # QR Code Steganography tools (6) — ECC, modules, compare
data/
encoding-patterns.ts # Encoding regex patterns + decoders
magic-bytes.ts # File signature database (100+ formats)
stego-signatures.ts # Known steganography tool signatures
unicode-invisible.ts # Invisible Unicode character databaseDesign decisions:
4 dependencies, nothing else —
@modelcontextprotocol/sdkfor the MCP protocol,zodfor input validation,pngjsfor PNG pixel access,jpeg-jsfor JPEG decoding. No bloated dependency tree. No native modules. No C bindings. No Python. No Java.100% offline — Every tool runs entirely locally. No HTTP requests. No API calls. No telemetry. No cloud dependencies. Your files never leave your machine.
Pure TypeScript statistical analysis — Chi-square test, RS analysis (Fridrich-Goljan-Du), Sample Pair Analysis, Shannon entropy, DFT, autocorrelation, BPCS border complexity, patchwork test, Index of Coincidence, and frequency analysis are all implemented in pure TypeScript. No external math libraries.
11 custom format parsers — PNG, JPEG, WAV, BMP, AVI/RIFF, GIF89a, PCAP, MP3/ID3, and ZIP are parsed with zero external dependencies using the
utils/parsers. This allows deep format-specific analysis that general-purpose libraries cannot provide.17 providers, 1 server — Each analysis category is an independent module. The AI agent picks which tools to use based on the investigation context.
Clean ToolDef pattern — Every tool follows the same
{ name, description, schema, execute }pattern. Adding a new tool is a single object in the appropriate module.Zod validation on every field — Every schema field has
.describe()for AI agent context. Invalid inputs are caught before execution with clear error messages.
Part of the MCP Security Suite
Project | Domain | Tools |
Browser-based security testing | 39 tools | |
Cloud security (AWS/Azure/GCP) | 38 tools | |
GitHub security posture | 39 tools | |
Vulnerability intelligence | 23 tools | |
OSINT & reconnaissance | 37 tools | |
Dark web & threat intelligence | 66 tools | |
DNS security intelligence | 103 tools | |
steganography-mcp | Steganography analysis | 128 tools |
Contributing
Contributions are welcome. See CONTRIBUTING.md for guidelines.
Available Tools
128 toolsarchive_commentA
Extract archive-level and per-file comments from a ZIP archive. Comments are a common steganographic hiding spot as they can contain arbitrary data without affecting archive functionality.
Inputs: file_path (required).
archive_detectA
Auto-detect steganography in ZIP archives. Checks for slack spaces between entries, prepended data before the first local header, appended data after the end-of-central-directory record, unusual extra fields, and file/archive comments that may conceal hidden data.
Inputs: file_path (required).
archive_extra_fieldsA
ZIP extra field analysis. Parses and describes each extra field in every entry of the archive (both local file headers and central directory entries). Extra fields can hide arbitrary data using custom or unknown header IDs.
Inputs: file_path (required).
archive_metadataA
Archive metadata summary. Reports file count, total compressed and uncompressed sizes, overall compression ratio, per-entry compression ratios, timestamps, version info, and encryption flags. Provides a high-level overview of the archive.
Inputs: file_path (required).
archive_polyglotA
Archive polyglot detection. Checks if a ZIP archive has prepended data that could make it valid as another file format (e.g., PDF+ZIP, PNG+ZIP, ELF+ZIP). Polyglot files are used in CTF challenges and to bypass file type filters.
Inputs: file_path (required).
archive_slackA
Slack space analysis for ZIP archives. Identifies and hex-dumps gaps between ZIP local file entries. Slack spaces are unused bytes between entries that can conceal hidden data without altering the archive's functionality.
Inputs: file_path (required), max_dump_size.
archive_structureA
ZIP entry structure analysis. Lists all local file headers with their byte offsets, compressed and uncompressed sizes, compression method, CRC-32, flags, and data start offsets. Provides a low-level structural map of the archive.
Inputs: file_path (required).
audio_detectA
Auto-detect audio steganography in a WAV file. Runs LSB chi-square, entropy analysis, metadata inspection, and checks for appended data after the WAV data chunk.
Inputs: file_path (required).
audio_echo_detectA
Echo hiding detection via autocorrelation analysis. Computes normalized autocorrelation at common echo delays (50-1000 samples). Unusually regular echo patterns indicate steganographic echo hiding.
Inputs: file_path (required).
audio_lsb_detectB
PCM sample LSB statistical analysis. Performs chi-square test on LSBs grouped by value pairs to detect LSB replacement steganography in WAV audio.
Inputs: file_path (required).
audio_lsb_extractA
Extract LSB data from audio samples. Reads the least significant bit of each PCM sample and attempts to decode hidden data.
Inputs: file_path (required), channel, max_bytes.
audio_metadataA
Extract metadata from a WAV file including RIFF INFO chunks, format details, and all chunk information.
Inputs: file_path (required).
audio_silenceA
Analyze silent sections in WAV audio for hidden data. Finds near-zero sample regions and checks their LSBs — silent sections with active LSBs are a strong indicator of steganography.
Inputs: file_path (required), threshold.
audio_spectrumA
Basic spectral analysis for hidden signals in WAV audio. Analyzes sample value distribution, zero-crossing rate, RMS energy per block, and detects anomalous quiet sections with high entropy.
Inputs: file_path (required).
bpcs_capacityA
Estimate BPCS embedding capacity. Counts the number of complex blocks at various thresholds across all bit planes and channels, then calculates the maximum data that could be hidden using BPCS. Reports capacity in bits, bytes, and as a percentage of the image size.
Inputs: file_path (required), threshold.
bpcs_complexity_mapB
Generate a detailed complexity map of all bit planes for a given channel. Computes border complexity for each 8x8 block across all 8 bit planes, producing a spatial map showing where complex (potentially data-carrying) regions are located in the image.
Inputs: file_path (required), channel, threshold.
bpcs_detectA
Auto-detect BPCS (Bit-Plane Complexity Segmentation) steganographic embedding. Computes the complexity map across all bit planes and channels, then checks for an abnormally high ratio of complex blocks — the signature of BPCS embedding which replaces complex bit-plane regions with hidden data.
Inputs: file_path (required), threshold.
bpcs_extractA
Extract data from BPCS complex regions. Gathers bits from all blocks that exceed the complexity threshold in the specified bit plane, assembling them in raster-scan order. The extracted bytes are analyzed for structure including magic bytes, entropy, and printable text content.
Inputs: file_path (required), plane, channel, max_bytes, +1 more.
bpcs_thresholdB
Complexity threshold analysis for BPCS steganalysis. Tests multiple threshold values and analyzes how the complex/simple block ratio changes. Finds the optimal threshold boundary where BPCS embedding would be most detectable, and identifies threshold ranges that produce suspicious ratios.
Inputs: file_path (required), plane, channel.
create_commentA
Inject data into format-specific comment fields. Supports PNG tEXt chunks, JPEG COM markers, and GIF comment extensions. The comment is stored in a standards-compliant way that most viewers ignore but metadata tools can read.
Inputs: comment (required), file_path (required), output_path (required).
create_eof_injectA
Append data after a file's end-of-file marker. The injected data is invisible to most viewers/parsers since they stop reading at the format EOF. Supports any file format — simply appends the given data string to the file's end.
Inputs: data (required), file_path (required), output_path (required).
create_metadataA
Inject data into a file's metadata fields. For PNG files, inserts a tEXt chunk with the given field name and data. For JPEG files, inserts EXIF APP1 data. The injected metadata persists in the file and is accessible via metadata readers.
Inputs: data (required), field (required), file_path (required), output_path (required).
create_null_cipherC
Create null cipher text that hides a secret message using letter selection. In 'first_letter' mode, the first letter of each word spells out the secret. In 'nth_word' mode, every Nth word's first letter spells the secret. Returns the generated cipher text.
Inputs: method (required), cover_text (required), secret_message (required).
create_paletteA
Embed data in palette color entry LSBs for indexed-color images (PNG with PLTE chunk or GIF). Each palette entry has R, G, B values — the least significant bit of each channel encodes one bit of the secret data. Capacity is 3 bits per palette entry.
Inputs: data (required), file_path (required), output_path (required).
create_polyglotA
Create polyglot files by prepending one file format before another. The resulting file is valid when interpreted as either format. For example, prepend a PDF before a ZIP to create a file that is both a valid PDF and a valid ZIP.
Inputs: file1_path (required), file2_path (required), output_path (required).
create_whitespaceA
Embed data in file whitespace using trailing spaces and tabs on text lines. Each bit of the secret data is encoded as a trailing space (0) or tab (1) appended to lines in the cover text file. The whitespace is invisible in most text editors.
Inputs: data (required), file_path (required), output_path (required).
crypto_decodeA
Multi-format decoder supporting Base64, hex, binary, decimal, octal, URL encoding, ROT13, Base32, Morse code, and HTML entities. In auto mode, detects the encoding first and applies the appropriate decoder.
Inputs: input (required), encoding.
crypto_detectA
Auto-detect encoding type of an input string. Tests against all known encoding patterns (Base64, hex, binary, morse, URL encoding, HTML entities, etc.) and returns matches sorted by confidence, with attempted decoding for top results.
Inputs: input (required).
crypto_entropyB
Shannon entropy calculation and classification for strings. Computes both character-level and byte-level entropy, classifying the result into categories: very low (repeated), low (simple text), normal text, compressed/encoded, or encrypted/random.
Inputs: input (required).
crypto_frequencyA
Character frequency analysis for cryptanalysis. Counts character occurrences, compares to standard English letter frequency (ETAOINSHRDLU), and calculates the Index of Coincidence. IC near 0.0667 suggests English/monoalphabetic, IC near 0.038 suggests random/polyalphabetic.
Inputs: input (required).
crypto_hash_idA
Hash type identification. Matches the input against known hash patterns by length and format to identify possible hash algorithms (MD5, SHA-1, SHA-256, SHA-512, bcrypt, CRC32, NTLM, MySQL, etc.).
Inputs: input (required).
crypto_patternsA
Known cipher and encoding pattern detection. Analyzes text for indicators of Caesar cipher, substitution cipher, Vigenere, rail fence transposition, Atbash cipher, and reversed text. Uses statistical methods like Index of Coincidence and frequency analysis.
Inputs: input (required).
crypto_xorA
XOR key brute-force for single-byte and multi-byte keys. Tries all single-byte XOR keys (0x00-0xFF) and scores by printable character ratio. For multi-byte keys, uses Index of Coincidence to estimate key length. Returns top 5 most likely results.
Inputs: input (required), max_key_length.
doc_pdf_metadataA
PDF metadata extraction. Parses the /Info dictionary for standard fields (Title, Author, Creator, Producer, CreationDate, ModDate) and searches for XMP metadata blocks. Useful for forensic attribution and document provenance analysis.
Inputs: file_path (required).
doc_pdf_streamsA
PDF stream analysis. Locates all stream/endstream blocks in a PDF, attempts zlib decompression on each, and reports sizes and entropy. Useful for finding hidden data within compressed PDF content streams.
Inputs: file_path (required).
doc_xml_metadataA
XML and Office document metadata extraction. Parses XML-like content for Dublin Core metadata (dc:creator, dc:title), Microsoft Office properties, processing instructions, and other metadata that may reveal authorship, editing history, or hidden information.
Inputs: file_path (required).
file_appendedB
Detect data appended after a file's format-specific end-of-file marker. Supports PNG (IEND), JPEG (FFD9), BMP (file size header), ZIP (end of central directory), and PDF (%%EOF). Commonly used to hide data in images and documents.
Inputs: file_path (required).
file_compareA
Binary diff between two files. Compares files byte-by-byte and reports size comparison, first N differences with their offsets and values, percentage of identical bytes, and a summary of the changes. Useful for detecting steganographic modifications.
Inputs: file_path_1 (required), file_path_2 (required).
file_embeddedA
Scan for embedded files within a binary, similar to binwalk. Searches for known magic byte signatures at every offset within the file to discover hidden or appended files, concatenated archives, and other embedded content.
Inputs: file_path (required), scan_depth.
file_entropyA
Section-by-section entropy analysis of a file. Calculates Shannon entropy per block and overall, flagging anomalous high-entropy sections that may indicate encrypted, compressed, or steganographically embedded data.
Inputs: file_path (required), block_size.
file_entropy_visualA
ASCII entropy visualization of a file. Renders a text-based bar chart showing entropy levels across the file, making it easy to visually spot high-entropy regions that may contain hidden data, encryption, or compression.
Inputs: file_path (required), width, block_size.
file_headerA
Deep header and structure analysis for known file formats. Parses and displays format-specific header fields including PNG IHDR chunk, JPEG SOF markers, BMP info header, ZIP local file headers, and PDF version/metadata. Provides low-level structural insight.
Inputs: file_path (required).
file_hexA
Hex dump with ASCII sidebar display. Shows file contents in traditional hex editor format with offset addresses, hexadecimal byte values, and printable ASCII representation. Useful for manual inspection of binary file structures.
Inputs: file_path (required), length, offset.
file_identifyA
File type identification via magic bytes. Reads the file header and matches against a comprehensive database of known file signatures. Also checks for extension vs actual type mismatch.
Inputs: file_path (required).
file_polyglotA
Detect polyglot files that are valid as two or more different file formats simultaneously. Checks for multiple valid file signatures at different offsets (e.g., PDF+ZIP, PNG+PDF). Useful for CTF challenges and forensic analysis.
Inputs: file_path (required).
file_stringsA
Extract printable and Unicode strings from binary files, similar to the Unix 'strings' command. Scans for runs of printable characters of a configurable minimum length and reports them with their file offsets. Supports ASCII, UTF-8, and UTF-16.
Inputs: file_path (required), encoding, min_length.
gif_appextB
Analyze GIF application extensions. Inspects NETSCAPE and other application extension blocks for anomalies or hidden data payloads.
Inputs: file_path (required).
gif_commentA
Extract and analyze GIF comment extensions. Comments can be used to hide data within a GIF file. Reports all comment text, sizes, and entropy.
Inputs: file_path (required).
gif_detectA
Auto-detect steganography in a GIF file. Analyzes the global color table for LSB patterns, checks for appended data after the trailer, inspects comment extensions, and reports frame count and animation info.
Inputs: file_path (required).
gif_frame_analysisA
Analyze multi-frame GIF animation properties. Reports per-frame size, delay times, disposal methods, local color tables, and anomalies in frame dimensions or compression.
Inputs: file_path (required).
gif_lzw_analysisA
Analyze LZW compressed sub-block sizes and entropy in GIF image data. Checks individual sub-block sizes for anomalies and patterns that may indicate steganographic manipulation of the compressed stream.
Inputs: file_path (required).
gif_paletteA
Analyze the GIF global color table for steganographic indicators. Reports sort order, duplicate entries, unused slots, color distribution, and luminance profile.
Inputs: file_path (required).
gif_palette_lsbB
Extract and analyze LSB patterns from GIF color table entries. Reports per-channel LSB bit strings, balance ratios, and chi-square test results for LSB uniformity.
Inputs: file_path (required).
gif_structureA
Visualize the GIF block structure. Shows all blocks (header, color tables, extensions, image descriptors, trailer) with offsets and sizes for forensic analysis.
Inputs: file_path (required).
img_appended_dataA
Detect and extract data appended after the image EOF marker. Checks for hidden data past PNG IEND, JPEG EOI, or BMP file size boundary.
Inputs: file_path (required).
img_bitplaneB
Extract and visualize a specific bit plane from an image channel. Shows dimensions, percentage of 1-bits, and an ASCII art preview of the first rows.
Inputs: file_path (required), plane, channel.
img_channel_analysisA
Per-channel statistical analysis for R, G, B, and A channels. Reports mean, standard deviation, entropy, min, max, and unique value count for each channel.
Inputs: file_path (required).
img_chi_squareA
Chi-square steganalysis attack on each color channel independently. Detects LSB replacement by testing whether adjacent pixel value pairs are equalized.
Inputs: file_path (required).
img_compareA
Pixel-by-pixel comparison of two images. Reports identical/different pixel counts, max difference, and which channels are affected. Useful for detecting steganographic modifications.
Inputs: file_path_1 (required), file_path_2 (required).
img_detectA
Auto-detect steganography in an image. Runs chi-square, RS analysis, entropy, metadata, appended data, and tool signature checks. Returns a comprehensive JSON report.
Inputs: file_path (required).
img_entropy_mapA
Per-block entropy analysis of an image. Splits the image into blocks and calculates Shannon entropy per block, flagging high-entropy regions that may contain hidden data.
Inputs: file_path (required), block_size.
img_histogramA
Generate a pixel value histogram with anomaly detection. Detects Pairs-of-Values (PoV) anomalies that indicate LSB steganography.
Inputs: file_path (required), channel.
img_known_toolsA
Scan image file bytes for known steganography tool signatures. Checks against a database of known patterns from tools like OpenStego, Steghide, JSteg, F5, and others.
Inputs: file_path (required).
img_lsb_detectB
Statistical LSB steganography detection. Runs chi-square and sample pair analysis on each color channel independently.
Inputs: file_path (required).
img_lsb_embedA
Embed a message into an image using LSB steganography. Reads a PNG file, embeds the message into the least significant bits, and writes a new PNG file.
Inputs: message (required), file_path (required), output_path (required), channels.
img_lsb_extractA
Extract hidden data from image LSBs. Extracts bits from specified channels and bit plane, attempts UTF-8 decode, and shows hex dump.
Inputs: file_path (required), order, channels, bit_plane, +1 more.
img_metadataA
Deep metadata extraction from an image. For PNG: extracts text chunks, chunk list, IHDR info. For JPEG: extracts EXIF, comments, quantization tables, marker list.
Inputs: file_path (required).
img_rs_analysisA
RS (Regular-Singular) steganalysis using the Fridrich-Goljan-Du method. Analyzes pixel groups to estimate LSB embedding rate per channel.
Inputs: file_path (required).
jpegadv_calibrationA
Crop-recalibrate steganalysis. Crops the image by removing a few pixel rows/columns to break DCT block alignment, then compares DCT and pixel statistics between the original and calibrated version. Steganographic modifications are revealed because recalibration restores natural statistics that embedding had disrupted.
Inputs: file_path (required), crop_pixels.
jpegadv_chi_slidingA
Sliding window chi-square analysis over sequential DCT coefficients. Divides the coefficient stream into windows of configurable size and runs chi-square pair analysis on each window. Returns per-window p-values and detection results to map where embedding starts and stops.
Inputs: file_path (required), window_size, window_count.
jpegadv_compatibilityA
JPEG stego tool compatibility check. Analyzes the image to determine which steganography tools could have been used based on its properties: color space, quality factor, progressive vs baseline encoding, marker structure, quantization tables, and metadata patterns.
Inputs: file_path (required).
jpegadv_f5_detectA
F5 steganography detection. F5 embeds data by decrementing the absolute values of DCT coefficients toward zero (shrinkage). Detects the characteristic excess of zeros relative to near-zero coefficients and the histogram dip at +/-1 that F5 matrix embedding produces.
Inputs: file_path (required).
jpegadv_jsteg_detectA
JSteg steganography detection. JSteg replaces the LSB of non-zero, non-one DCT coefficients. Uses chi-square test on coefficient value pairs (2k, 2k+1) to detect the equalization that JSteg embedding produces. Includes sliding window analysis on sequential AC coefficients.
Inputs: file_path (required).
jpegadv_outguess_detectB
OutGuess steganography detection. OutGuess embeds data in DCT coefficients and adjusts unused coefficients to preserve first-order statistics. Detects by analyzing second-order statistics (inter-block coefficient correlations) that OutGuess disrupts, and checks for preserved histogram with disrupted spatial correlations.
Inputs: file_path (required).
jpegadv_pvd_detectC
Pixel Value Differencing (PVD) steganography detection applied to JPEG. PVD encodes data in the differences between adjacent pixel values. Detects by analyzing the distribution of pixel differences for the staircase pattern at PVD range boundaries (Wu-Tsai ranges). Works on decoded pixel data via jpeg-js.
Inputs: file_path (required).
jpeg_commentA
Extract and analyze JPEG COM (comment) markers. Checks for hidden data patterns, unusually large comment segments, and high-entropy content that could indicate steganographic payloads concealed in comment fields.
Inputs: file_path (required).
jpeg_dct_histogramA
DCT coefficient distribution analysis for steganography detection. Analyzes the Y-channel pixel value distribution and SOS entropy data to detect anomalies caused by DCT-domain stego tools like JSteg, F5, and OutGuess.
Inputs: file_path (required).
jpeg_double_compressionA
Detect double JPEG compression artifacts. Double compression occurs when a JPEG is decoded and re-encoded, which introduces characteristic blocking artifacts and quantization table anomalies — a common indicator of image tampering or steganographic embedding.
Inputs: file_path (required).
jpeg_exif_deepA
Deep EXIF analysis including GPS coordinates, timestamps, software info, thumbnails, maker notes, and all IFD entries. Flags interesting fields for forensic investigation such as editing software traces, GPS location, and temporal inconsistencies.
Inputs: file_path (required).
jpeg_quantizationA
Quantization table analysis with quality estimation. Displays all quantization tables in 8x8 grid format and estimates the JPEG quality factor by comparing against the standard luminance/chrominance tables — essential for forensic analysis.
Inputs: file_path (required).
jpeg_structureA
Parse JPEG markers/segments with offsets and sizes. Shows the internal structure of a JPEG file including all markers, their positions, and segment lengths — useful for identifying hidden data or anomalous segments.
Inputs: file_path (required).
jpeg_thumbnail_compareA
Compare the EXIF thumbnail against the main JPEG image. A dimension or content mismatch between the thumbnail and the main image is a strong indicator that the main image was modified after capture while the original thumbnail was preserved — a common forensic artifact.
Inputs: file_path (required).
mp3_detectA
Auto-detect MP3 steganography. Checks ID3 tag padding, gaps before first audio frame, trailing data after last frame, bitrate anomalies, and inter-frame gaps for signs of hidden data.
Inputs: file_path (required).
mp3_frame_analysisA
MP3 frame header analysis. Examines bitrate changes, padding patterns, VBR detection, frame size consistency, and layer/version anomalies across audio frames.
Inputs: file_path (required).
mp3_metadataB
Full MP3 metadata extraction. Reports ID3v1 tag, ID3v2 frames with content, duration, bitrate, VBR status, sample rate, and file structure overview.
Inputs: file_path (required).
mp3_paddingB
Bit reservoir and padding manipulation detection. Analyzes the gap before the first audio frame, inter-frame gaps between consecutive frames, and checks for data inserted between or around audio frames.
Inputs: file_path (required).
mp3_sample_analysisB
Statistical analysis of decoded MP3 frame sizes. Computes entropy, variance, and anomalies in frame size distribution to detect steganographic manipulation of audio frame data.
Inputs: file_path (required).
mp3_structureA
MP3 frame structure visualization. Displays the first N frames with bitrate, padding bit, channel mode, and frame size for a detailed map of the file's audio frame layout.
Inputs: file_path (required), max_frames.
net_detectB
Auto-detect network steganography in a PCAP file. Checks IP covert header fields, ICMP payload anomalies, DNS tunneling indicators, and inter-packet timing patterns. Returns a combined suspicion score.
Inputs: file_path (required).
net_dns_tunnelA
DNS tunneling detection. Analyzes subdomain length distribution, label entropy, TXT record usage, query frequency per domain, and unique subdomain counts to identify DNS-based covert channels.
Inputs: file_path (required).
net_http_headerB
HTTP header covert channel analysis. Examines unusual/custom headers, cookie value entropy, header ordering anomalies, and hidden data in standard header fields across HTTP traffic in a PCAP.
Inputs: file_path (required).
net_icmp_payloadA
ICMP echo payload analysis. Examines entropy, printable content ratio, payload size anomalies, and pattern consistency of ICMP echo request/reply payloads to detect covert data exfiltration.
Inputs: file_path (required).
net_ip_headerB
IP header covert field analysis. Examines TTL patterns, IP identification field entropy, and TOS/DSCP usage across packets to detect hidden data in IP header fields.
Inputs: file_path (required).
net_statsA
PCAP statistics summary. Reports packet count, protocol distribution, top IP pairs, port usage, capture duration, and data volume for an overview of the capture file.
Inputs: file_path (required).
net_tcp_headerA
TCP sequence/acknowledgment number analysis. Checks for patterns in ISN (Initial Sequence Numbers), unusual TCP options, and seq/ack number anomalies that could indicate covert channel usage.
Inputs: file_path (required).
net_timingA
Inter-packet timing analysis. Computes packet arrival intervals and analyzes them for binary encoding patterns (e.g., short interval = bit 0, long interval = bit 1). Detects timing-based covert channels.
Inputs: file_path (required).
qr_compareA
Compare two QR code images for differences. Performs pixel-by-pixel comparison, identifies differing modules, and analyzes whether differences are in the data region or function patterns. Useful for detecting stego modifications between an original and modified QR code.
Inputs: file_path_1 (required), file_path_2 (required), threshold.
qr_data_extractA
Extract QR data region pixels from an image. Identifies the QR code grid, excludes function patterns (finder, timing, alignment), and returns the raw pixel values from the data/ECC modules. Useful for manual analysis of potentially modified data regions.
Inputs: file_path (required), threshold.
qr_detectA
Detect steganography in QR code images. Analyzes the image for unusual pixel patterns around data modules, checks for sub-module color variations, and measures pixel value distributions that could indicate LSB embedding or other stego techniques applied to a QR code image.
Inputs: file_path (required), threshold.
qr_ecc_analysisA
Error correction capacity analysis for QR code images. Estimates the QR version and calculates the total, data, and ECC codewords for each error correction level (L/M/Q/H). Reports unused ECC capacity that could theoretically hold steganographic data without breaking the QR code.
Inputs: file_path (required), ecc_level, threshold.
qr_module_analysisA
Module-level pixel analysis of QR code images. Examines individual modules (the black/white squares) for sub-pixel anomalies: color variation within a single module, non-uniform grayscale values, and deviations from expected pure black (0) or pure white (255). These anomalies can indicate LSB stego or watermarking.
Inputs: file_path (required), threshold.
qr_structureA
QR code structure analysis. Detects finder patterns (the 3 corner squares), estimates the QR version from the distance between patterns, reports the estimated module (pixel) size, and provides the image's dimensions relative to the expected QR grid.
Inputs: file_path (required), threshold.
spread_correlationB
Autocorrelation-based steganography detection. Computes the autocorrelation of pixel values to find periodic embedding patterns. Spread spectrum and watermarking methods often introduce periodic signals that appear as peaks in the autocorrelation function.
Inputs: file_path (required), channel, max_lag.
spread_dft_analysisA
DFT magnitude spectrum analysis for spread spectrum steganography detection. Computes the Discrete Fourier Transform of pixel values and analyzes the frequency spectrum for hidden signals, unusual peaks, or spectral flatness anomalies that indicate spread spectrum embedding.
Inputs: file_path (required), channel.
spread_noise_analysisA
Noise floor embedding detection. Compares noise levels across image regions to detect spread spectrum or additive noise-based steganography. Embedded data adds noise to cover pixels, and uneven noise distribution between smooth and textured regions can reveal hidden content.
Inputs: file_path (required), block_size.
spread_patchworkA
Patchwork watermark detection using the patchwork statistical test. Splits pixel values into two pseudo-random groups and tests whether the mean difference between groups is statistically significant. A significant difference indicates a patchwork watermark was embedded by adding/subtracting a small value from selected pixels.
Inputs: file_path (required), seed, channel.
spread_watermark_detectA
Statistical watermark detection via variance comparison between image regions. Divides the image into blocks and compares pixel variance across regions. Watermarked regions tend to have altered variance patterns compared to natural image content, revealing the presence of additive watermarks.
Inputs: file_path (required), block_size.
text_acrosticA
Detect first-letter, first-word, last-letter, last-word, or nth-character patterns (acrostic messages) hidden across lines of text.
Inputs: text (required), n, mode.
text_detectA
Auto-detect text steganography. Checks for zero-width characters, whitespace encoding, invisible Unicode, homoglyphs, and unusual patterns.
Inputs: text (required).
text_homoglyphA
Detect Unicode homoglyph substitutions in text. Identifies non-ASCII characters that visually resemble ASCII letters (e.g., Cyrillic a vs Latin a, Greek o vs Latin o).
Inputs: text (required).
text_invisible_scanA
Scan text for ALL invisible Unicode characters. Checks every character against the full invisible character database and reports positions, names, and categories.
Inputs: text (required).
text_unicode_analysisA
Full Unicode character distribution analysis. Categorizes all characters by script block, performs entropy analysis, and detects suspicious script mixing.
Inputs: text (required).
text_whitespace_detectA
Detect whitespace encoding in text. Checks each line for trailing whitespace patterns where space=0 and tab=1 might encode binary data.
Inputs: text (required).
text_whitespace_extractA
Extract a whitespace-encoded message from text. Reads trailing whitespace from each line and decodes space=0/tab=1 binary encoding.
Inputs: text (required).
text_zwc_detectA
Detect zero-width characters (ZWSP, ZWNJ, ZWJ, BOM) in text. Reports positions, counts, and potential encoded message length.
Inputs: text (required).
text_zwc_embedA
Embed a secret message into cover text using zero-width characters. Encodes the message to binary and maps bits to ZWSP(0)/ZWNJ(1), inserting them between characters of the cover text.
Inputs: text (required), message (required).
text_zwc_extractA
Decode a zero-width character encoded message. Extracts ZWC chars and decodes binary: ZWSP=0, ZWNJ=1 (attempts both polarities).
Inputs: text (required).
video_detectA
Auto-detect steganography in an AVI video. Runs LSB analysis on the first few frames, checks for appended data after the RIFF container, and analyzes frame size variance for anomalies.
Inputs: file_path (required).
video_eof_dataA
Detect and analyze data appended after the AVI RIFF container EOF. Reports the offset, size, entropy, and hex dump of any trailing data that may contain hidden payloads.
Inputs: file_path (required).
video_frame_compareA
Compare adjacent video frames for pixel-level anomalies. Computes byte-level diff, Mean Squared Error (MSE), and PSNR between two frames to detect steganographic modifications.
Inputs: file_path (required), frame_a, frame_b.
video_frame_extractB
Extract LSB data from video frames as bytes. Collects the least significant bit from each byte of the specified frames and assembles them into a byte stream with hex dump and text preview.
Inputs: file_path (required), frames, max_bytes.
video_frame_lsbA
LSB analysis of a specific video frame. Extracts the raw pixel data from the given frame index and checks LSB distribution, balance, and entropy.
Inputs: file_path (required), frame.
video_inter_frameB
Analyze frame types from the AVI idx1 index. Reports keyframe vs delta frame distribution, size statistics per type, and flag anomalies that may indicate steganographic manipulation.
Inputs: file_path (required).
video_metadataA
Extract metadata from an AVI video file. Reports dimensions, FPS, codec, stream info, duration, and file-level properties.
Inputs: file_path (required).
video_structureA
Visualize the AVI/RIFF chunk structure as a tree. Shows all chunks, their FourCC codes, offsets, and sizes for forensic analysis of the container structure.
Inputs: file_path (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 128 tools
Many tools overlap in purpose, such as multiple LSB detection tools (img_lsb_detect, img_chi_square, img_rs_analysis) and numerous JPEG analysis tools, making it difficult for an agent to distinguish between them. While some tools have distinct focuses, the sheer number and similarity of detection tools cause significant ambiguity.
Tool names follow a mostly consistent pattern: format prefix plus action (e.g., audio_lsb_detect, video_frame_extract). However, there are deviations like 'create_whitespace' without a format prefix and the 'jpegadv_' prefix for advanced JPEG tools, which slightly breaks the pattern. Overall, naming is clear and predictable.
128 tools is extremely high for a single MCP server, far exceeding typical scopes (3-15 tools). This overwhelms the agent's selection process and suggests the server should be split into multiple smaller, focused servers (e.g., image-stego, audio-stego, network-stego).
The toolset covers an impressively broad range of steganographic techniques across many file formats (images, audio, video, text, network, etc.), including detection, extraction, and embedding. Minor gaps exist (e.g., no MP4 video support), but overall the coverage is thorough and leaves few workflow dead-ends.
Maintenance
Related MCP Connectors
PDF and image tools for AI agents: compress, merge, split, OCR, sign. Runs locally, never uploads.
30 security tools for AI agents: phishing links, exposure maps, DNS, SSL, PQC, history, pivots.
49 free agent tools: WHOIS, PDF to text, email checks, FX rates, X12 EDI, JSON repair. No API key.
62 real-world tools for agents: search, scraping, social, enrichment, image, video, voice.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides AI agents with 37 OSINT tools and 12 data sources to perform unified reconnaissance, domain analysis, and attack surface mapping. It enables agents to query, correlate, and reason across platforms like Shodan, VirusTotal, and Censys in parallel.37364 npm60MIT
- AlicenseAqualityCmaintenanceA comprehensive reconnaissance toolset that provides AI agents with 37 tools across 12 data sources like Shodan and VirusTotal for automated intelligence gathering. It enables agents to perform domain reconnaissance, attack surface mapping, and cross-platform data correlation within a single conversational interface.37364 npm2MIT
- AlicenseAqualityCmaintenanceComprehensive DNS security toolkit for AI agents: 103 tools across 13 categories including DNSSEC validation, subdomain takeover detection, email security audit, and more, all running locally with no external API calls required.100147 npm9MIT
- AlicenseNot gradedqualityBmaintenanceProvides 44 specialized tools for steganography, digital forensics, and covert-channel extraction across images, audio, video, PCAPs, documents, and more, enabling automated triage, payload extraction, and decoding.Apache 2.0