The general syntax for OpenStego is:
java -jar <path>\openstego.jar <command> [options]
Here, the first argument must be a command. Valid commands are:
Command | Action |
---|---|
embed , --embed | Embed message into cover file |
extract , --extract | Extract message from stego file |
gensig , --gensig | Generate a signature for watermarking |
embedmark , --embedmark | Watermark a cover file using signature |
checkmark , --checkmark | Checks for watermark presence in the file |
algorithms , --algorithms | List down supported steganography algorithms |
readformats , --readformats | List down supported formats for cover file |
writeformats , --writeformats | List down supported formats for stego file |
help , --help | Display the help. To get help on options specific to an algorithm, provide the name of the algorithm using -a option |
Following option is common for all commands other than algorithms
Option | Description |
---|---|
-a , --algorithm <algorithm_name> | Name of the steganography algorithm to use. List of the supported algorithms can be retrieved using algorithms command |
embed
commandOption | Description |
---|---|
-mf , --messagefile <filename> | Source message/data file. If this option is not provided or - is provided as the value then the message data is read from stdin |
-cf , --coverfile <filename> | Cover file in which the message will be embedded. This option supports * and ? wildcards for filename. If wildcard filename is provided then make sure that it is surrounded by double quotes. Multiple filenames can also be provided by separating them with ; (semi-colon).If the wildcard expression returns more than one file, then |
-sf , --stegofile <filename> | Output stego file containing the embedded message. If this option is not provided or - is provided as the value then the stego file is written to stdout |
-c , --compress | Compress the message file before embedding (default) |
-C , --nocompress | Do not compress the message file before embedding |
-e , --encrypt | Encrypt the message file before embedding |
-E , --noencrypt | Do not encrypt the message file before embedding (default) |
-p , --password <password> | Password to be used for encryption. If this is not provided then prompt will be displayed for entry |
-A , --cryptalgo <crypto algorithm> | Algorithm to be used for encryption. Defaults to AES128 . Possible values are AES128 or AES256 . Please note that AES256 will only be supported with JRE having unlimited strength jurisdiction policy |
Additions and changes to embed
options while using RandomLSB Plugin
Option | Description |
---|---|
-b , --maxBitsUsedPerChannel <n> | Max number of bits to use per color channel in the image for embedding data. This value can be increased at the expense of image quality, in case size of image is not able to accommodate the data (Default = 3) |
-cf , --coverfile <filename> | If this option is not provided or - is provided as the value then a random image containing noise is generated and used as cover file. The size of image is minimum required to embed the given source file when maxBitsUsedPerChannel bits are used per color channel |
-sf , --stegofile <filename> | If this option is not provided or - is provided as the value then stego file is written to stdout in PNG format |
extract
commandOption | Description |
---|---|
-sf , --stegofile <filename> | Stego file containing the embedded message |
-xf , --extractfile <filename> | Optional filename for the extracted data. Use this to override the filename embedded in the stego file |
-xd , --extractdir <dir> | Directory where the message file will be extracted. If this option is not provided, then the file is extracted to current directory |
-p , --password <password> | Password to be used for decryption. If this is not provided then prompt will be displayed for entry (if the message is encrypted) |
gensig
commandOption | Description |
---|---|
-gf , --sigfile <filename> | Output signature file that can be used to watermark files. If this option is not provided or - is provided as the value then the signature file is written to stdout |
-p , --password <password> | Password to be used for generation of signature. If this is not provided then prompt will be displayed for entry |
embedmark
commandOption | Description |
---|---|
-gf , --sigfile <filename> | Watermarking signature file. If this option is not provided or - is provided as the value then the signature data is read from stdin |
-cf , --coverfile <filename> | Cover file which needs to be digitally watermarked. This option supports * and ? wildcards for filename. If wildcard filename is provided then make sure that it is surrounded by double quotes. Multiple filenames can also be provided by separating them with ; (semi-colon). If the wildcard expression returns more than one file, then -sf option is ignored, and each coverfile is overwritten with the corresponding generated stegofile |
-sf , --stegofile <filename> | Output stego file containing the embedded watermark. If this option is not provided or - is provided as the value then the stego file is written to stdout |
checkmark
commandOption | Description |
---|---|
-sf , --stegofile <filename> | Stego file containing the embedded watermark |
-gf , --sigfile <filename> | Signature file which was used to watermark the file |
To embed secret.txt
into wallpaper.png
and generate the output into test.png
:
java -jar <path>\openstego.jar embed -a randomlsb -mf secret.txt -cf wallpaper.png -sf test.png
OR
java -jar <path>\openstego.jar --embed --algorithm=randomlsb --messagefile=secret.txt --coverfile=wallpaper.png --stegofile=test.png
To extract embedded data from test.png
to /data
directory:
java -jar <path>\openstego.jar extract -a randomlsb -sf test.png -xd /data
OR
java -jar <path>\openstego.jar extract --algorithm=randomlsb --stegofile=test.png --extractdir=/data
To generate a signature file:
java -jar <path>\openstego.jar gensig -a dwtdugad -gf my.sig
OR
java -jar <path>\openstego.jar --gensig --algorithm=dwtdugad --sigfile=my.sig
To embed signature into owned.png
and generate the output into out.png
:
java -jar <path>\openstego.jar embedmark -a dwtdugad -gf my.sig -cf owned.png -sf out.png
OR
java -jar <path>\openstego.jar --embedmark --algorithm=dwtdugad --sigfile=my.sig --coverfile=owned.png --stegofile=out.png
To check for watermark in test.png
using my.sig
signature file:
java -jar <path>\openstego.jar checkmark -a dwtdugad -gf my.sig -sf test.png
OR
java -jar <path>\openstego.jar checkmark --algorithm=dwtdugad --sigfile=my.sig --stegofile=test.png
Piping example:
ls -R | java -jar <path>\openstego.jar embed -a randomlsb > test.png
Wildcard example (Please note that the double quotes are important):
java -jar <path>\openstego.jar embed -a randomlsb -cf "img???.png;wall*.png" -mf watermark.txt