70 lines
4 KiB
Markdown
70 lines
4 KiB
Markdown
# stegterm
|
||
|
||
Терминальный инструмент для CTF-стеганографии и аудио-форензики:
|
||
анализ изображений (битовые плоскости, каналы, XOR, LSB-извлечение),
|
||
спектрограмма и декодирование SSTV Robot36 для аудио — с превью через
|
||
Kitty graphics protocol.
|
||
|
||
English version: [README.md](README.md).
|
||
Заметки по разработке, честные оговорки о рисках: [NOTES.md](NOTES.md).
|
||
|
||
## История
|
||
|
||
Изначально было частью [burterm](https://github.com/r3g1tpr0cs/burterm) —
|
||
терминального инструмента для веб-пентеста, — выделено в отдельный
|
||
проект: стеганография и SSTV не имеют отношения к веб-пентесту, это
|
||
была функциональность, постепенно прицепившаяся не к тому инструменту.
|
||
|
||
## Возможности
|
||
|
||
- **Изображения** — изоляция битовой плоскости (классический первый шаг
|
||
разбора LSB-стеганографии), изоляция одного канала, градации серого,
|
||
инверсия, XOR двух изображений одинакового размера, линейное
|
||
LSB-извлечение в сырые байты (показывается и как текст, и как hex)
|
||
- **Аудио (только WAV)** — спектрограмма через собственную реализацию
|
||
БПФ (без внешних DSP-зависимостей), декодирование SSTV Robot36 через
|
||
FM-демодуляцию на основе преобразования Гильберта
|
||
- Всё рендерится через Kitty graphics protocol; `ctrl+v` передаёт
|
||
последнюю картинку заново, если перерисовка TUI её перекрыла
|
||
|
||
WAV-only — осознанный выбор, не недоделка: сжатие с потерями (MP3 и
|
||
т.п.) убивает мелкую структуру спектра, в которую в CTF прячут
|
||
сообщения — такие задачи почти всегда именно в несжатом PCM WAV.
|
||
|
||
## Сборка
|
||
|
||
```sh
|
||
go mod tidy
|
||
go build -o stegterm ./cmd/stegterm
|
||
```
|
||
|
||
Требуется Go 1.23+. Сборка без cgo, без внешних DSP/image-библиотек —
|
||
всё (БПФ, преобразование Гильберта, декодирование SSTV) написано с
|
||
нуля на стандартной библиотеке.
|
||
|
||
**Код ни разу не проходил через компилятор** — та же оговорка, что и у
|
||
родительского проекта burterm; что вероятнее всего потребует правки
|
||
при первой сборке — в [NOTES.md](NOTES.md).
|
||
|
||
## Запуск
|
||
|
||
```sh
|
||
./stegterm
|
||
```
|
||
|
||
Один экран. `ctrl+o` загружает файл (путь вводится в поле) — `.wav`
|
||
считается аудио, всё остальное изображением. `ctrl+g` переключает
|
||
операцию (режим преобразования картинки, либо спектрограмма/SSTV для
|
||
аудио), `ctrl+r` применяет, `ctrl+v` повторно показывает последний
|
||
результат, `ctrl+s` экспортирует текущий результат в
|
||
`~/.stegterm/stego-exports/`.
|
||
|
||
## Структура репозитория
|
||
|
||
```
|
||
cmd/stegterm/ точка входа
|
||
internal/
|
||
stego/ преобразования изображений, Kitty-протокол
|
||
audio/ разбор WAV, БПФ, спектрограмма, декодирование SSTV
|
||
tui/ единственный экран интерфейса (bubbletea)
|
||
```
|