badchars/steganography-mcp
GitHub: badchars/steganography-mcp
一个提供 128 个本地离线隐写术分析工具的 MCP 服务器,让 AI 智能体能以对话方式自动完成隐写检测、取证分析与数据提取。
Stars: 2 | Forks: 0
English | 中文 | 繁體中文 | 한국어 | 日本語 | Deutsch | Español | Français | Italiano | Dansk | Norsk | Polski | Русский | Bosanski | Українська | Português (BR) | العربية | ไทย | Türkçe | বাংলা | हिन्दी | Ελληνικά | Tiếng Việt
The most comprehensive steganography analysis toolkit for AI agents.
LSB detection, chi-square steganalysis, RS analysis, DCT forensics, F5/JSteg/OutGuess detection, BPCS analysis, video & GIF steganography, network covert channels, MP3 stego, spread spectrum watermarks, archive stego, QR code analysis, audio steganography, zero-width text encoding, file forensics, polyglot detection, encoding identification — unified into a single MCP server.
128 tools. 17 categories. 4 dependencies. 100% offline. Zero API keys required. Every tool runs locally.
The Problem • How It's Different • Quick Start • What The AI Can Do • Tools (128) • CLI Usage • Architecture • Contributing
## 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 correlation **steganography-mcp** gives your AI agent 128 tools across 17 categories via the [Model Context Protocol](https://modelcontextprotocol.io). 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}" ## 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**.| Traditional Approach | steganography-mcp | |
|---|---|---|
| Interface | 10+ CLI tools, 5+ languages, web UIs | MCP — AI agent calls tools conversationally |
| Coverage | One technique at a time | 17 categories, 128 tools in parallel |
| Image analysis | zsteg (Ruby), stegsolve (Java), custom scripts | Agent runs chi-square, RS analysis, SPA, entropy map, histogram, bit plane extraction, metadata, and tool signature detection — all at once |
| JPEG forensics | stegdetect (abandoned), manual DCT inspection | Agent analyzes DCT histogram, double compression, quantization tables, EXIF deep analysis, thumbnail comparison, comment fields |
| Audio stego | Audacity + manual LSB scripts | Agent performs LSB chi-square, spectrum analysis, silence region LSB check, echo hiding detection, metadata extraction |
| Text stego | Web-based tools, manual inspection | Agent detects zero-width chars, whitespace encoding, invisible Unicode, homoglyphs, acrostics — and can embed/extract ZWC messages |
| Dependencies | Ruby, Java, Perl, Python, C, web tools | npx -y steganography-mcp — 4 dependencies, pure TypeScript |
| API keys | N/A (but fragmented toolchain) | Zero. 100% offline, no external calls |
| Output | Raw text, images, manual correlation | Structured JSON — AI correlates findings automatically |
Claude Code
# 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.tsClaude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`: { "mcpServers": { "steganography": { "command": "npx", "args": ["-y", "steganography-mcp"] } } }Cursor / Windsurf / other MCP clients
Same JSON config format. Point the command to `npx -y steganography-mcp` or your local installation path.Image Steganalysis (14)
| Tool | Description |
|------|-------------|
| `img_detect` | Auto-detect steganography in an image. Runs chi-square, RS analysis, entropy, metadata, appended data, and tool signature checks. Returns a comprehensive JSON report |
| `img_lsb_detect` | Statistical LSB steganography detection. Runs chi-square and sample pair analysis on each color channel independently |
| `img_lsb_extract` | Extract hidden data from image LSBs. Extracts bits from specified channels and bit plane, attempts UTF-8 decode, and shows hex dump |
| `img_lsb_embed` | 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 |
| `img_bitplane` | Extract and visualize a specific bit plane from an image channel. Shows dimensions, percentage of 1-bits, and an ASCII art preview |
| `img_chi_square` | Chi-square steganalysis attack on each color channel independently. Detects LSB replacement by testing whether adjacent pixel value pairs are equalized |
| `img_rs_analysis` | RS (Regular-Singular) steganalysis using the Fridrich-Goljan-Du method. Analyzes pixel groups to estimate LSB embedding rate per channel |
| `img_histogram` | Generate a pixel value histogram with anomaly detection. Detects Pairs-of-Values (PoV) anomalies that indicate LSB steganography |
| `img_entropy_map` | Per-block entropy analysis of an image. Splits the image into blocks and calculates Shannon entropy per block, flagging high-entropy regions |
| `img_metadata` | Deep metadata extraction from an image. For PNG: text chunks, chunk list, IHDR info. For JPEG: EXIF, comments, quantization tables, marker list |
| `img_appended_data` | Detect and extract data appended after the image EOF marker. Checks for hidden data past PNG IEND, JPEG EOI, or BMP file size boundary |
| `img_compare` | Pixel-by-pixel comparison of two images. Reports identical/different pixel counts, max difference, and which channels are affected |
| `img_channel_analysis` | Per-channel statistical analysis for R, G, B, and A channels. Reports mean, standard deviation, entropy, min, max, and unique value count |
| `img_known_tools` | Scan image file bytes for known steganography tool signatures. Checks against a database of patterns from OpenStego, Steghide, JSteg, F5, and others |
JPEG Analysis (7)
| Tool | Description |
|------|-------------|
| `jpeg_structure` | Parse JPEG markers/segments with offsets and sizes. Shows internal structure including all markers, positions, and segment lengths |
| `jpeg_dct_histogram` | 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 |
| `jpeg_double_compression` | Detect double JPEG compression artifacts. Identifies characteristic blocking artifacts and quantization table anomalies — a common indicator of image tampering or stego embedding |
| `jpeg_quantization` | Quantization table analysis with quality estimation. Displays all quantization tables in 8x8 grid format and estimates the JPEG quality factor |
| `jpeg_exif_deep` | Deep EXIF analysis including GPS coordinates, timestamps, software info, thumbnails, maker notes, and all IFD entries. Flags forensically interesting fields |
| `jpeg_thumbnail_compare` | Compare EXIF thumbnail against the main JPEG image. Dimension or content mismatch indicates post-capture modification — a common forensic artifact |
| `jpeg_comment` | Extract and analyze JPEG COM (comment) markers. Checks for hidden data patterns, unusually large comments, and high-entropy content |
Audio Steganalysis (7)
| Tool | Description |
|------|-------------|
| `audio_detect` | Auto-detect audio steganography in a WAV file. Runs LSB chi-square, entropy analysis, metadata inspection, and checks for appended data |
| `audio_lsb_detect` | PCM sample LSB statistical analysis. Performs chi-square test on LSBs grouped by value pairs to detect LSB replacement steganography |
| `audio_lsb_extract` | Extract LSB data from audio samples. Reads the least significant bit of each PCM sample and attempts to decode hidden data |
| `audio_spectrum` | Spectral analysis for hidden signals in WAV audio. Analyzes sample value distribution, zero-crossing rate, RMS energy per block, and detects anomalous quiet sections |
| `audio_metadata` | Extract metadata from a WAV file including RIFF INFO chunks, format details, and all chunk information |
| `audio_silence` | 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 |
| `audio_echo_detect` | Echo hiding detection via autocorrelation analysis. Computes normalized autocorrelation at common echo delays. Regular echo patterns indicate steganographic echo hiding |
Text & Unicode (10)
| Tool | Description |
|------|-------------|
| `text_detect` | Auto-detect text steganography. Checks for zero-width characters, whitespace encoding, invisible Unicode, homoglyphs, and unusual patterns |
| `text_zwc_detect` | Detect zero-width characters (ZWSP, ZWNJ, ZWJ, BOM) in text. Reports positions, counts, and potential encoded message length |
| `text_zwc_extract` | Decode a zero-width character encoded message. Extracts ZWC chars and decodes binary: ZWSP=0, ZWNJ=1 (attempts both polarities) |
| `text_zwc_embed` | Embed a secret message into cover text using zero-width characters. Encodes message to binary and maps bits to ZWSP(0)/ZWNJ(1) |
| `text_whitespace_detect` | Detect whitespace encoding in text. Checks each line for trailing whitespace patterns where space=0 and tab=1 might encode binary data |
| `text_whitespace_extract` | Extract a whitespace-encoded message from text. Reads trailing whitespace from each line and decodes space=0/tab=1 binary encoding |
| `text_invisible_scan` | Scan text for ALL invisible Unicode characters. Checks every character against the full invisible character database and reports positions and names |
| `text_homoglyph` | Detect Unicode homoglyph substitutions in text. Identifies non-ASCII characters that visually resemble ASCII letters (Cyrillic a vs Latin a, etc.) |
| `text_unicode_analysis` | Full Unicode character distribution analysis. Categorizes all characters by script block, performs entropy analysis, and detects suspicious script mixing |
| `text_acrostic` | Detect first-letter, first-word, last-letter, last-word, or nth-character patterns (acrostic messages) hidden across lines of text |
File Forensics (10)
| Tool | Description |
|------|-------------|
| `file_identify` | File type identification via magic bytes. Reads the file header and matches against a comprehensive database of known file signatures. Checks for extension mismatch |
| `file_polyglot` | Detect polyglot files valid as two or more formats simultaneously. Checks for multiple valid file signatures at different offsets (PDF+ZIP, PNG+PDF, etc.) |
| `file_embedded` | 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 |
| `file_appended` | Detect data appended after a file's format-specific EOF marker. Supports PNG (IEND), JPEG (FFD9), BMP, ZIP (EOCD), and PDF (%%EOF) |
| `file_entropy` | Section-by-section entropy analysis. Calculates Shannon entropy per block and overall, flagging anomalous high-entropy sections |
| `file_entropy_visual` | ASCII entropy visualization of a file. Renders a text-based bar chart showing entropy levels across the file for visual anomaly detection |
| `file_strings` | 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 |
| `file_hex` | Hex dump with ASCII sidebar display. Traditional hex editor format with offset addresses, hex bytes, and printable ASCII representation |
| `file_header` | Deep header and structure analysis for known formats. Parses PNG IHDR, JPEG SOF, BMP info header, ZIP local file headers, and PDF version/metadata |
| `file_compare` | Binary diff between two files. Byte-by-byte comparison reporting differences with offsets, percentage identical, and LSB-only difference detection for stego analysis |
Document Analysis (5)
| Tool | Description |
|------|-------------|
| `doc_pdf_hidden` | Hidden PDF content detection. Scans for JavaScript, auto-actions, OpenAction, hidden annotations, invisible text, embedded files, and other covert content |
| `doc_pdf_metadata` | PDF metadata extraction. Parses the /Info dictionary and XMP metadata blocks for forensic attribution and document provenance analysis |
| `doc_pdf_streams` | PDF stream analysis. Locates all stream/endstream blocks, attempts zlib decompression, and reports sizes and entropy for finding hidden data |
| `doc_html_hidden` | Hidden HTML content detection. Scans for comments, display:none elements, data-* attributes, hidden inputs, base64 content, zero-size elements, and invisible text |
| `doc_xml_metadata` | XML and Office document metadata extraction. Parses Dublin Core, Microsoft Office properties, processing instructions, and other metadata fields |
Encoding & Crypto (7)
| Tool | Description |
|------|-------------|
| `crypto_detect` | 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 |
| `crypto_decode` | Multi-format decoder supporting Base64, hex, binary, decimal, octal, URL encoding, ROT13, Base32, Morse code, and HTML entities. Auto mode detects encoding first |
| `crypto_frequency` | Character frequency analysis for cryptanalysis. Counts character occurrences, compares to standard English frequency (ETAOINSHRDLU), and calculates Index of Coincidence |
| `crypto_entropy` | Shannon entropy calculation and classification for strings. Computes character-level and byte-level entropy, classifying into categories from repeated data to encrypted/random |
| `crypto_xor` | 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 |
| `crypto_hash_id` | Hash type identification. Matches input against known hash patterns by length and format (MD5, SHA-1, SHA-256, SHA-512, bcrypt, CRC32, NTLM, etc.) |
| `crypto_patterns` | Known cipher and encoding pattern detection. Analyzes text for Caesar cipher, substitution cipher, Vigenere, rail fence transposition, Atbash, and reversed text |
Advanced JPEG (7)
| Tool | Description |
|------|-------------|
| `jpegadv_f5_detect` | F5 steganography detection. Analyzes DCT coefficient histogram for shrinkage at zero and asymmetric distribution around zero |
| `jpegadv_jsteg_detect` | JSteg detection. Chi-square test on coefficient value pairs, zero AC coefficient preservation analysis |
| `jpegadv_outguess_detect` | OutGuess detection. First-order histogram smoothness, second-order statistics, inter-block correlation analysis |
| `jpegadv_pvd_detect` | Pixel Value Differencing detection. Horizontal/vertical difference histograms, staircase artifacts at PVD range boundaries |
| `jpegadv_chi_sliding` | Sliding window chi-square analysis. Per-window p-values to detect embedding start/end points and estimate message length |
| `jpegadv_calibration` | Crop-recalibrate steganalysis. Compares original vs cropped image statistics to reveal DCT modifications |
| `jpegadv_compatibility` | JPEG stego tool compatibility check. Analyzes markers, quality, encoding type to determine which tools (JSteg, F5, OutGuess, steghide, JPHS) could have been used |
Video Steganography (8)
| Tool | Description |
|------|-------------|
| `video_detect` | Auto-detect steganography in AVI files. Runs LSB analysis on frames, checks for appended data, analyzes frame size variance |
| `video_frame_lsb` | LSB analysis of a specific video frame. Extracts raw pixel data, checks LSB balance/distribution and entropy |
| `video_frame_extract` | Extract LSB bits from specified frames. Assembles into byte stream with hex dump and text preview |
| `video_frame_compare` | Compare two frames byte-by-byte. Reports MSE, PSNR, max difference, and LSB-only modification detection |
| `video_inter_frame` | Analyze idx1 index entries for keyframe vs delta frame distribution, flag histogram, and size statistics |
| `video_metadata` | Extract AVI metadata: dimensions, FPS, codec, stream details, duration, audio presence |
| `video_structure` | Recursively visualize the RIFF/LIST chunk tree with fourCC codes, offsets, and sizes |
| `video_eof_data` | Detect and analyze data appended after the RIFF container boundary |
GIF Steganography (8)
| Tool | Description |
|------|-------------|
| `gif_detect` | Auto-detect GIF steganography. Analyzes color table LSBs, appended data, comment extensions, animation anomalies |
| `gif_palette` | Palette analysis: sort order, duplicates, unused entries, luminance distribution, LSB-differing adjacent pairs |
| `gif_palette_lsb` | Extract LSB from each R/G/B channel of the global color table. Per-channel balance and chi-square tests |
| `gif_frame_analysis` | Multi-frame animation analysis: per-frame size, delay times, disposal methods, local color tables |
| `gif_comment` | Extract all comment extensions with text content, entropy, printable ratio, and hex dump |
| `gif_appext` | Application extension analysis. Parses NETSCAPE loop counts, detects non-standard extensions |
| `gif_lzw_analysis` | LZW sub-block entropy analysis per frame. Detects anomalous sub-block sizes and cross-frame entropy outliers |
| `gif_structure` | Visualize complete GIF block structure: header, color tables, extensions, image descriptors, trailer |
Network Steganography (8)
| Tool | Description |
|------|-------------|
| `net_detect` | Auto-detect network steganography in PCAP files. Runs IP covert field, ICMP payload, DNS tunneling, and timing analysis |
| `net_ip_header` | IP header covert field analysis. TTL patterns, IP identification entropy, TOS/DSCP usage |
| `net_tcp_header` | TCP seq/ack number analysis. ISN analysis, per-flow sequence increments, TCP options, window size variability |
| `net_icmp_payload` | ICMP echo payload analysis. Per-packet entropy, printable content ratio, payload size anomalies |
| `net_dns_tunnel` | DNS tunneling detection. Subdomain length distribution, per-label entropy, TXT record usage, query frequency |
| `net_http_header` | HTTP header covert channel analysis. Custom headers, X-header entropy, cookie value entropy |
| `net_timing` | Inter-packet timing analysis. Interval statistics, timing covert channel detection via binary splitting |
| `net_stats` | PCAP statistics summary. Protocol distribution, top IP pairs, port usage, throughput |
MP3 Steganography (7)
| Tool | Description |
|------|-------------|
| `mp3_detect` | Auto-detect MP3 steganography. Checks ID3 padding, PRIV frames, pre-audio gaps, trailing data, bitrate anomalies |
| `mp3_frame_analysis` | Frame header analysis. Bitrate distribution, padding bit entropy, frame size statistics, channel mode consistency |
| `mp3_id3_hidden` | ID3v1/v2 hidden data analysis. APIC, PRIV, GEOB frames, unknown frame IDs, padding content inspection |
| `mp3_padding` | Bit reservoir/padding manipulation detection. Pre-audio gaps, inter-frame gaps with per-gap entropy |
| `mp3_sample_analysis` | Statistical analysis of frame sizes. Distribution histogram, entropy of sizes and deltas, outlier detection |
| `mp3_metadata` | Full MP3 metadata extraction. Audio properties, ID3v2 frames with decoded text, file structure layout |
| `mp3_structure` | Frame structure visualization. Per-frame table, bitrate map, and padding bit map |
Spread Spectrum (5)
| Tool | Description |
|------|-------------|
| `spread_dft_analysis` | DFT magnitude spectrum analysis. Spectral flatness, frequency band energy, dominant frequencies for hidden signal detection |
| `spread_correlation` | Autocorrelation-based detection. Finds periodic embedding patterns, distinguishes natural peaks from suspicious ones |
| `spread_watermark_detect` | Statistical watermark detection. Block-based pixel variance comparison, checkerboard patterns, quadrant uniformity |
| `spread_noise_analysis` | Noise floor embedding detection. Laplacian noise estimation, smooth vs textured region noise comparison |
| `spread_patchwork` | Patchwork watermark detection. Multi-seed PRNG group splitting, statistical hypothesis testing |
BPCS Analysis (5)
| Tool | Description |
|------|-------------|
| `bpcs_detect` | Auto-detect BPCS embedding. Complexity analysis across all 24 bit planes (8 planes x 3 channels), MSB/LSB trend analysis |
| `bpcs_complexity_map` | Full complexity map with ASCII spatial visualization and distribution histograms for all 8 bit planes |
| `bpcs_threshold` | Threshold sweep analysis from 0.05 to 0.95. Finds optimal BPCS boundary and suspicious complexity patterns |
| `bpcs_extract` | Extract data from complex regions. Gathers bits above threshold in raster-scan order, analyzes for structure |
| `bpcs_capacity` | Estimate BPCS embedding capacity across all channels and planes, accounting for conjugation map overhead |
Archive Steganography (7)
| Tool | Description |
|------|-------------|
| `archive_detect` | Auto-detect archive steganography. Checks slack spaces, prepended/appended data, unusual extra fields, comments |
| `archive_structure` | ZIP entry structure analysis. Lists all local file headers with offsets, sizes, compression methods, CRC-32 |
| `archive_extra_fields` | Parse extra fields from local and central directory entries. Flags unknown header IDs as potential hiding spots |
| `archive_comment` | Extract archive-level and per-file comments with entropy analysis and hex dumps |
| `archive_slack` | Identify gaps between ZIP entries with size, entropy, printable ratio, and hex dumps |
| `archive_polyglot` | Detect if ZIP has prepended/appended data valid as another format (PDF, PNG, ELF, PE, etc.) |
| `archive_metadata` | Summary of file count, compression ratios, timestamps, version info, encryption flags |
Create & Embed (7)
| Tool | Description |
|------|-------------|
| `create_eof_inject` | Append data after a file's EOF marker. Takes file_path, data, and output_path |
| `create_metadata` | Inject data into metadata fields. PNG tEXt chunks, JPEG COM segments, generic append |
| `create_whitespace` | Encode data in trailing whitespace (space=0, tab=1) on text file lines |
| `create_null_cipher` | Generate null cipher text. First-letter mode or nth-word arrangement |
| `create_polyglot` | Concatenate two files to create a polyglot valid as both formats |
| `create_comment` | Inject into format-specific comment fields (PNG tEXt, JPEG COM, GIF Comment Extension) |
| `create_palette` | Embed data in palette LSBs for indexed PNG (PLTE) and GIF (Global Color Table) |
QR Code Steganography (6)
| Tool | Description |
|------|-------------|
| `qr_detect` | Detect steganography in QR code images. Pixel distribution bimodality, LSB randomization, non-pure module values |
| `qr_structure` | QR structure analysis. Finder patterns, version estimation, module size, grid dimensions |
| `qr_ecc_analysis` | Error correction capacity analysis. ECC levels L/M/Q/H, steganographic capacity from sacrificing ECC codewords |
| `qr_module_analysis` | Per-module pixel variance analysis. Clean QR codes should have zero intra-module variance |
| `qr_data_extract` | Extract data region pixels excluding function patterns. Module values, binary string, entropy statistics |
| `qr_compare` | Compare two QR code images. Data region vs function pattern differences, LSB-only modification detection |
For authorized security research and educational purposes only.
Always ensure you have proper authorization before performing steganography analysis on files you do not own.
MIT License • Built by Orhan Yildirim • contact@orhanyildirim.us