68 lines
2.4 KiB
Markdown
68 lines
2.4 KiB
Markdown
# 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)
|
|
```
|