2 unstable releases
0.4.2 | Jan 16, 2021 |
---|---|
0.3.2 | Jan 10, 2021 |
#1704 in Text processing
98KB
2K
SLoC
Ptero CLI
Ptero is a CLI text steganography tool, meant to be used in the social media like Facebook. It offers a way to encode and decode data.
It implements the algorithm presented here.
However, it also includes an extended implementation of specified algorithm, called ELUV. See help
of the tool for more info on the usage.
The tool was tested in Facebook's Messenger and Twitter - both methods were working correctly. You can also read more about the method here.
Development
Rust is the main language used in this repository. By default, you have to install standard Rust toolchain to start working. See official installation page for more info.
Editor
I use the VS Code as the main editor in this project. I'd suggest to install these extensions:
Build
If you want to just build the artifact run:
cargo build
To run the binary through the cargo
you can issue:
# Example with argument
cargo run -- -vv encode -c some_cover_text -d secret
Tests and coverage
To run all the tests:
cargo test
Coverage checking is done through separate package cargo-tarpaulin
- make sure to install it if you want to. To run it locally just:
cargo tarpaulin -v
Lint
This project ensures it is compliant with clippy
rules. To make sure you're fine, run:
cargo clippy
Project structure
This project contains both binary package nad library. See lib.rs to see module overview and main.rs the entry point for CLI binary package.
Scripts
Bitrate measurement
There are two script in the scripts directory which are used for measuring the bitrate. The one is bitrate_for_pivot.sh which calculates the average bitrate for given amount of executions on random secret data, and the other one measure_bitrate.sh does launch measurements for given pivot range in parallel, 100 executions and 30 bytes secret data.
The latter one should be used to get the results. For example:
./scripts/measure_bitrate.sh 10 40 &> result
It should be ran in the project root. Please note that there might be a case that given secret may not be embedded in cover text due to the cover text capacity.
Dependencies
~8–17MB
~208K SLoC