demo.mp4
Echo é uma ferramenta modular de chunking, criptografia e reconstrução de arquivos, escrita em C.
O projeto é focado em:
- processamento seguro baseado em chunks
- criptografia autenticada (AEAD) via libsodium
- storage providers plugáveis (ex.: filesystem local)
- reconstrução determinística via manifest
- testabilidade (unit + integration)
- arquitetura limpa e modular (core/app/providers/stego)
O Echo divide o arquivo em chunks, cifra cada chunk, armazena usando um provider e depois reconstrói o arquivo original a partir de um manifest.
- Chunking configurável
- Hash SHA-256 e criptografia autenticada com libsodium
- Manifest binário (save/load) para reconstrução
- Provider local filesystem (
provider_localfs) - Camada de carrier/embedding (steganografia) por extensão do objeto:
.txt(carrier textual).ppm(carrier de imagem explícito, PPM).pnm(carrier de imagem LSB “imperceptível”, PPM/P6).png(carrier PNG mantendo aparência: adiciona chunk ancilar)
O binário atual se chama aaaa (para evitar conflito com o builtin echo do shell).
- Upload (binário “normal”, sem stego):
./aaaa upload <input> <manifest> <password> <storage_dir> <chunk_size>
- Upload com carrier textual:
./aaaa upload-text <input> <manifest> <password> <storage_dir> <chunk_size>
- Upload com carrier de imagem:
./aaaa upload-image <input> <manifest> <password> <storage_dir> <chunk_size>(PPM.ppm)./aaaa upload-image-lsb <input> <manifest> <password> <storage_dir> <chunk_size>(LSB.pnm)./aaaa upload-image-png <input> <manifest> <password> <storage_dir> <chunk_size>(PNG.png, mantém aparência)
- Download:
./aaaa download <manifest> <output> <password> <storage_dir>
- Verify:
./aaaa verify <manifest> <storage_dir>
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
ctest --test-dir build --output-on-failureInstalação (sem sudo, recomendado):
make installInstalação em /usr/local (com sudo):
make install-systemMake all important parts testable
- Corpus do carrier textual:
- default:
assets/corpus/shrek_pt.txt - override:
ECHO_STEGO_CORPUS=/path/to/corpus.txt
- default:
- Cover do carrier PNG:
- default:
assets/image.png - override:
ECHO_STEGO_PNG_COVER=/path/to/cover.png
- default: