forked from syvaidya/openstego
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
228 lines (168 loc) · 8.33 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
OpenStego [email protected]@
================
OpenStego is a steganography application that provides two functionalities:
1. Data Hiding: It can hide any data within a cover file (e.g. images).
2. Watermarking: Watermarking files (e.g. images) with an invisible
signature. It can be used to detect unauthorized file copying.
For GUI:
java -jar <path>\openstego.jar
For command line interface:
java -jar <path>\openstego.jar <command> [options]
The first argument must be a command. Valid commands are:
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 this 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':
-a, --algorithm <algorithm_name>
Name of the steganography algorithm to use. List of the supported
algorithms can be retrieved using 'algorithms' command
'embed' options:
-mf, --messagefile <filename>
Source message/data file. If this option is not provided or '-'
(without quotes) 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'
option is ignored, and each coverfile is overwritten with the
corresponding generated stegofile
-sf, --stegofile <filename>
Output stego file containing the embedded message. If this option is
not provided or '-' (without quotes) 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
'extract' options:
-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' options:
-gf, --sigfile <filename>
Output signature file that can be used to watermark files. If this
option is not provided or '-' (without quotes) 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' options:
-gf, --sigfile <filename>
Watermarking signature file. If this option is not provided or '-'
(without quotes) 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 '-' (without quotes) is provided as the value then the
stego file is written to stdout
'checkmark' options:
-sf, --stegofile <filename>
Stego file containing the embedded watermark
-gf, --sigfile <filename>
Signature file which was used to watermark the file
Examples:
To embed secret.txt into wallpaper.png and generate the output into test.png:
java -jar <path>\openstego.jar embed -a lsb -mf secret.txt \
-cf wallpaper.png -sf test.png
OR
java -jar <path>\openstego.jar --embed --algorithm=lsb \
--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 lsb -sf test.png -xd /data
OR
java -jar <path>\openstego.jar extract --algorithm=lsb \
--stegofile=test.png --extractdir=/data
To generate a signature file:
java -jar <path>\openstego.jar gensig -a dwtxie -gf my.sig
OR
java -jar <path>\openstego.jar --gensig --algorithm=dwtxie \
--sigfile=my.sig
To embed signature into owned.png and generate the output into out.png:
java -jar <path>\openstego.jar embedmark -a dwtxie -gf my.sig \
-cf owned.png -sf out.png
OR
java -jar <path>\openstego.jar --embedmark --algorithm=dwtxie \
--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 dwtxie -gf my.sig \
-sf test.png
OR
java -jar <path>\openstego.jar checkmark --algorithm=dwtxie \
--sigfile=my.sig --stegofile=test.png
Piping example:
ls -R | java -jar <path>\openstego.jar embed -a lsb > test.png
Wildcard example (Please note that the double quotes are important):
java -jar <path>\openstego.jar embed -a lsb \
-cf "img???.png;wall*.png" -mf watermark.txt
PLUGINS HELP:
-------------
Please use the following command to get plugin specific help:
java -jar <path>\openstego.jar -help -a <algorithm_name>
ADDING NEW PLUGIN:
------------------
To add a new plugin, the following abstract class must be implemented:
- com.openstego.desktop.OpenStegoPlugin
Read the API documentation for the details of the methods to be implemented.
In addition, the following utility class can be used to handle multilingual
string labels for the plugin:
- com.openstego.desktop.util.LabelUtil
A new namespace should be added to LabelUtil class for each new plugin. Same
namespace can also be used for exception messages while throwing
OpenStegoException.
After implementing the plugin classes, create new file named
"OpenStegoPlugins.external" and put the fully qualified name of the class
which implements OpenStegoPlugin in the file. Make sure that this file is
put directly under the CLASSPATH while invoking the application.
Please refer to the "com.openstego.desktop.plugin.lsb" package sources
for sample plugin implementation.
AUTHOR:
-------
@author.name@ (@author.mail@)
Copyright (c) [email protected]@
SEE ALSO:
---------
Project homepage: @homepage.url@
Blog: http://syvaidya.blogspot.com
LICENSE:
--------
GNU General Public License 2.0 (GPL) (see LICENSE file)