To compile, run
$ make
To clean, run
$ make clean
To run tests, run
$ make test
It supports hiding a plaintext file or a ciphertext file.
The program receives the --embed / -e option and the following parameters:
- file to hide with --in / -i
- steganographic method with --steg / -s. Possible values: <LSB1|LSB4|LSBE>
- carrier file with --p / -p
- output wav file with --out / -o (this file will be the carrier that contains the file to hide)
For example:
$ ./stegowav --in samples/avatar.png --p samples/fun.wav --out samples/dup.wav --steg LSB4 --embed
or, what is the same:
$ ./stegowav -i samples/avatar.png -p samples/fun.wav -o samples/dup.wav -s LSB4 -e
The program receives the --embed / -e option and the following parameters:
- file to hide with --in / -i
- steganographic method with --steg / -s. Possible values: <LSB1|LSB4|LSBE>
- carrier file with --p / -p
- output wav file with --out / -o (this file will be the carrier that contains the file to hide)
- encryption password with --pass
- [OPTIONAL] encryption algorithm with -a. Possible values: <aes128|aes192|aes256|des> (default set to aes128)
- [OPTIONAL] ecnryption cipher mode with -m. Possible values: <ecb|cfb|ofb|cbc> (default set to cbc)
For example:
$ ./stegowav --in samples/avatar.png --p samples/fun.wav --out samples/dup.wav --steg LSB4 --embed -a "aes192" -m cfb --pass "thePassword"
Use of quotes are optional
The program receives the --extract / -x option and the following parameters:
- steganographic method with --steg / -s. Possible values: <LSB1|LSB4|LSBE>
- carrier file with --p / -p
- output file with --out / -o (No need for extension, it is added automatically)
For example:
$ ./stegowav --p samples/dup.wav --out out/output --steg LSB1 --extract
or, what is the same:
$ ./stegowav -p samples/dup.wav -o out/output -s LSB1 -x
The program receives the --extract / -x option and the following parameters:
- steganographic method with --steg / -s. Possible values: <LSB1|LSB4|LSBE>
- carrier file with --p / -p
- output file with --out / -o (No need for extension, it is added automatically)
- encryption password with --pass
- encryption algorithm with -a. Possible values: <aes128|aes192|aes256|des>
- ecnryption cipher mode with -m. Possible values: <ecb|cfb|ofb|cbc>
$ ./stegowav --p samples/dup.wav --out samples/output --steg LSB4 --extract -a "aes192" -m cfb --pass "thePassword"
Use of quotes are optional
For more details, run:
$ ./stegowav --help
- In order to compile it, you'll need libssl-dev packages (on Ubuntu run apt-get install libssl-dev)
- If you have problems running the test with some Linux distributions, add -fno-stack-protector flag on Makefile
- To check if the input file that was embed and the output file that was extracted are equal, you can run:
cmp --silent file1 file2 || echo "files are different"
To check WAV format specification, go to Microsoft WAVE specs
- Chervonagura, Ioji
- Bond, Federico
- Gutierrez, Julian
- Itzcovich, Ivan