# stegterm A terminal tool for CTF steganography and audio forensics: image bit-plane/channel analysis, XOR, LSB extraction, spectrogram rendering, and Robot36 SSTV decoding — with preview via the Kitty graphics protocol. Русская версия: [README.ru.md](README.ru.md). Design notes, known risks, honest caveats: [NOTES.md](NOTES.md) (Russian only). ## History Originally part of [burterm](https://github.com/r3g1tpr0cs/burterm), a terminal web-pentest tool — split out into its own project because steganography/SSTV have nothing to do with web pentesting; it was functionality that accreted onto the wrong tool one feature at a time. ## Features - **Images** — bit-plane isolation (classic first step for spotting LSB-hidden text/patterns), single-channel isolation, grayscale, invert, XOR between two same-size images, linear LSB extraction to raw bytes (shown as both text and hex) - **Audio (WAV only)** — spectrogram via a hand-written FFT (no external DSP dependency), Robot36 SSTV decoding via Hilbert-transform-based FM demodulation - Everything renders through the Kitty graphics protocol; `ctrl+v` re-sends the last rendered image if a TUI redraw clobbers it WAV-only is deliberate, not a shortcut: lossy compression (MP3/etc.) destroys the fine spectral structure CTF challenges hide messages in — those tasks are almost always plain PCM WAV. ## Building ```sh go mod tidy go build -o stegterm ./cmd/stegterm ``` Requires Go 1.23+. Builds without cgo, no external DSP/image libraries — everything (FFT, Hilbert transform, SSTV decoding) is a from-scratch implementation on the standard library. **The code has never gone through a compiler** — same caveat as its parent project burterm; see [NOTES.md](NOTES.md) for what's most likely to need fixing on the first build. ## Running ```sh ./stegterm ``` One screen. Load a file with `ctrl+o` (path typed into the input field); `.wav` is treated as audio, anything else as an image. `ctrl+g` cycles the operation (image transform mode, or spectrogram/SSTV for audio), `ctrl+r` applies it, `ctrl+v` re-shows the last result, `ctrl+s` exports the current result to `~/.stegterm/stego-exports/`. ## Repository layout ``` cmd/stegterm/ entry point internal/ stego/ image transforms, Kitty protocol encoding audio/ WAV parsing, FFT, spectrogram, SSTV decoding tui/ the single-screen interface (bubbletea) ```