-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
241a86a
commit e9967c7
Showing
38 changed files
with
1,734 additions
and
576 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
/STIRMARK-README/1.1.1.1/Mon May 1 19:57:38 2000// | ||
/TODO/1.2/Mon May 1 20:09:05 2000// | ||
/arc.c/1.2/Mon May 1 21:47:58 2000// | ||
/arc.h/1.2/Mon May 1 21:47:58 2000// | ||
/config.h.bot/1.1.1.1/Mon May 1 19:57:38 2000// | ||
/fourier.c/1.2/Mon May 1 21:01:06 2000// | ||
/fourier.h/1.2/Mon May 1 21:01:06 2000// | ||
/golay.c/1.1.1.1/Mon May 1 19:57:38 2000// | ||
/golay.h/1.1.1.1/Mon May 1 19:57:38 2000// | ||
/install-sh/1.1.1.1/Mon May 1 19:57:38 2000// | ||
/jpeg-6b-steg.diff/1.1.1.1/Mon May 1 19:57:38 2000// | ||
/seek_script/1.1.1.1/Mon May 1 19:57:38 2000// | ||
D/jpeg-6b-steg//// | ||
/jpg.h/1.2/Wed Jan 17 23:47:37 2001// | ||
/ChangeLog/1.3/Sat Jan 20 23:14:06 2001// | ||
/README/1.8/Tue Feb 13 00:05:25 2001// | ||
/iterator.c/1.4/Tue Feb 13 00:29:48 2001// | ||
/iterator.h/1.4/Tue Feb 13 00:30:08 2001// | ||
/jpg.c/1.9/Tue Feb 13 00:29:07 2001// | ||
/outguess.h/1.11/Tue Feb 13 00:29:19 2001// | ||
/pnm.c/1.4/Tue Feb 13 00:29:33 2001// | ||
/pnm.h/1.3/Tue Feb 13 00:29:28 2001// | ||
/outguess.1/1.7/Tue Feb 13 00:42:15 2001// | ||
D/missing//// | ||
/config.h.in/1.3/Tue Feb 13 19:26:18 2001// | ||
/histogram.c/1.2/Tue Feb 13 19:57:38 2001// | ||
/outguess.c/1.16/Tue Feb 13 19:19:23 2001// | ||
/Makefile.in/1.5/Tue Feb 13 21:03:31 2001// | ||
/configure/1.4/Tue Feb 13 21:05:08 2001// | ||
/configure.in/1.4/Tue Feb 13 21:05:02 2001// |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
outguess |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
[email protected]:/cvs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,13 @@ | ||
OutGuess 0.2 | ||
-------------- | ||
2000-01-20 - Niels Provos <[email protected]> | ||
- Use statistical corrections to defend against steganalysis. | ||
|
||
2000-04-01 - Niels Provos <[email protected]> | ||
- A lot of cleanup. | ||
- Use all DCT coefficients for JPG now. This version is not any more | ||
compatible with the previous versions. | ||
|
||
OutGuess 0.13b | ||
-------------- | ||
1999-08-06 - Niels Provos <[email protected]> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
OutGuess 0.13b | ||
OutGuess 0.2 | ||
-------------- | ||
1999-08-06 - Niels Provos <[email protected]> | ||
2001-02-12 - Niels Provos <[email protected]> | ||
|
||
OutGuess is a universal steganographic tool that allows the insertion | ||
of hidden information into the redundant bits of data sources. The | ||
|
@@ -11,24 +11,29 @@ and JPEG image formats are supported. In the next paragraphs, images | |
will be used as concrete example of data objects, though OutGuess can | ||
use any kind of data, as long as a handler is provided. | ||
|
||
OutGuess is available under the BSD software license. Please see each | ||
source file for its respective license. OutGuess was written in | ||
Germany, and CONTAINS CRYPTOGRAPHIC FUNCTIONS. | ||
|
||
Steganography is the art of hiding the fact that communication is | ||
happening. Classical steganography systems depend on keeping the | ||
encoding system secret, but modern steganography should only be | ||
detectable if a secret information, e.g. a secret key is known. But | ||
because of their invasive nature they leave detectable traces within | ||
an image's characteristics, e.g. its Fourier signature, and hence | ||
allow an eavesdropper to detect images which have been modified, and | ||
thus giving away the fact that secret communication is happening. The | ||
secret of the information is not degraded, its hidden nature is | ||
revealed, defeating the whole purpose of Steganography. | ||
|
||
A more processor- and space-intensive alternative is to match existing | ||
images against the source data in order to minimize the number of | ||
modifications required to express the original message. | ||
OutGuess is available under the BSD software license. It is | ||
completely free for any use including commercial. | ||
|
||
Please see each source file for its respective license. OutGuess was | ||
developed in Germany. | ||
|
||
Steganography is the art and sience of hiding that communication is | ||
happening. Classical steganography systems depend on keeping the | ||
encoding system secret, but modern steganography are detectable only | ||
if secret information is known, e.g. a secret key. Because of their | ||
invasive nature steganography systems leave detectable traces within a | ||
medium's characteristics. This allows an eavesdropper to detect media | ||
that has been modified, revealing that secret communication is taking | ||
place. Although the secrecy of the information is not degraded, its | ||
hidden nature is revealed, defeating the main purpose of | ||
Steganography. | ||
|
||
For JPEG images, OutGuess preserves statistics based on frequency | ||
counts. As a result, no known statistical test is able to detect | ||
the presence of steganographic content. Before embedding data | ||
into an image, the OutGuess system can determine the maximum | ||
message size that can be hidden while still being able to maintain | ||
statistics based on frequency counts. | ||
|
||
OutGuess uses a generic iterator object to select which bits in the | ||
data should be modified. A seed can be used to modify the behavior | ||
|
@@ -37,110 +42,43 @@ message. By altering the seed, OutGuess tries to find a sequence of | |
bits that minimizes the number of changes in the data that have to be | ||
made. | ||
|
||
A bias is introduced that favors the modification of bits that were | ||
extracted from a high value, and tries to avoid the modification of | ||
bits that were extracted from a low value. | ||
|
||
A sample output from OutGuess is as follows: | ||
|
||
Reading .... | ||
Extracting usable bits ... | ||
JPEG compression quality set to 91 | ||
Encoded data: 1178 | ||
Reading dscf0001.jpg.... | ||
JPEG compression quality set to 75 | ||
Extracting usable bits: 40059 bits | ||
Correctable message size: 21194 bits, 52.91% | ||
Encoded 'snark.bz2': 14712 bits, 1839 bytes | ||
Finding best embedding... | ||
New best: 0: 4709(49.8%), bias 4332(0.92), saved: 3 | ||
New best: 5: 4700(49.7%), bias 4290(0.91), saved: 12 | ||
New best: 7: 4663(49.3%), bias 4217(0.90), saved: 49 | ||
New best: 17: 4644(49.1%), bias 4188(0.90), saved: 68 | ||
New best: 121: 4660(49.3%), bias 4169(0.89), saved: 52 | ||
121, 8829: Embedding data: 9424 in 81406 | ||
Bits embedded: 9456, changed: 4660(49.3%), bias: 4169, tot: 81320, skip: 71864 | ||
Total bits changed: 8829 (changed 4660 + bias 4169) | ||
0: 7467(50.6%)[50.8%], bias 8137(1.09), saved: -13, total: 18.64% | ||
1: 7311(49.6%)[49.7%], bias 8079(1.11), saved: 5, total: 18.25% | ||
4: 7250(49.2%)[49.3%], bias 7906(1.09), saved: 13, total: 18.10% | ||
59: 7225(49.0%)[49.1%], bias 7889(1.09), saved: 16, total: 18.04% | ||
59, 7225: Embedding data: 14712 in 40059 | ||
Bits embedded: 14744, changed: 7225(49.0%)[49.1%], bias: 7889, tot: 40032, skip: 25288 | ||
Foiling statistics: corrections: 2590, failed: 1, offset: 122.585494 +- 239.664983 | ||
Total bits changed: 15114 (change 7225 + bias 7889) | ||
Storing bitmap into data... | ||
Writing .... | ||
Writing foil/dscf0001.jpg.... | ||
|
||
The simple example script "seek_script" uses OutGuess to select an image | ||
that fits the data we want to hide the best, yielding the lowest number | ||
of changed bits. Because we do not care about the actual content of | ||
the cover data we send, this is a very viable approach. | ||
|
||
Additionally, OutGuess allows to hide an arbitrary number of messages | ||
in the data. Thus it also provides plausible deniablity. It keeps | ||
track of the bits that have been modified previously and locks them. | ||
A (23,12,7) Golay code is used for error correction to tolerate | ||
collisions on locked bits. Artifical errors are introduced to avoid | ||
modifying bits that have a hight bias. | ||
|
||
IN THIS VERSION, OUTGUESS ONLY INSERTS TWO DIFFERENT MESSAGES. THE | ||
RELEASE VERSION WILL HANDLE AN ARBITRARY NUMBER. | ||
|
||
The available command line options are, capital letters specify options | ||
for the second message, | ||
|
||
-k <key> The secret key used to encrypt and hide the message in | ||
the provided data. | ||
|
||
-d <filename> The filename specifying the message to be hidden in the | ||
data. | ||
|
||
-i <n> The upper limit in finding an optimal iterator seed. The | ||
maximum value for the limit is 65536. | ||
|
||
-s <n> The initial seed the iterator object uses for | ||
selecting bits in the redundant data. If no upper limit | ||
is specified, the iterator will use this seed without | ||
searching for a more optimal embedding. | ||
|
||
-e Use error correction for data encoding and decoding. | ||
|
||
Other options that apply to the general executions of OutGuess are | ||
|
||
-r Retrieve a message from a data object. If this option | ||
is not specified, OutGuess will embed messages. | ||
|
||
-x <n> If the second key does not create an iterator object | ||
that is successful in embedding the data, the program | ||
will derive up to <n> new keys. | ||
|
||
-p "param" Passes a string as parameter to the destination data | ||
handler. For the JPEG image format, this is the | ||
compression quality, it can take values between 75 and | ||
100. The higher the quality the more bits to hide | ||
a message in the data are available. | ||
|
||
-t Collect statistics about redundant bit usage. Repeated | ||
't's increase output level. Probably meaningless to | ||
most. | ||
|
||
For embedding messages, you need to specify a source and a destination | ||
filename. OutGuess determines the data format by the filename extension. | ||
If no filenames are specified OutGuess operates as filter and assumes | ||
the PPM data format. | ||
|
||
For example | ||
|
||
outguess -k "my secret pass phrase" -d hidden.txt monkey.jpg out.jpg | ||
|
||
embeds the message 'hidden.txt' into the 'monkey.jpg' image. In the | ||
other direction | ||
|
||
outguess -k "my secret pass phrase" -r out.jpg message.txt | ||
|
||
will retrieve the hidden message from the image. | ||
|
||
If you want to embed a second message, use | ||
|
||
outguess -k "secret1" -d hide1.txt -E -K "secret2" -D hide2.txt \ | ||
monkey.jpg out.jpg | ||
|
||
OutGuess will first embed "hide1.txt" and then "hide2.txt" on top of | ||
it, using error correcting codes. The second message "hide2.txt" can | ||
be retrieved with | ||
|
||
outguess -k "secret2" -e -r out.jpg message.txt | ||
Additionally, OutGuess allows to hide multiple messages in the data. | ||
Thus, it also provides plausible deniablity. It keeps track of the | ||
bits that have been modified previously and locks them. A (23,12,7) | ||
Golay code is used for error correction to tolerate collisions on | ||
locked bits. Artifical errors are introduced to avoid modifying bits | ||
that have a hight bias. | ||
|
||
This version of OutGuess can insert only two different messages. | ||
As this is a BETA version, I would like you to give me feedback on | ||
the usefulness of OutGuess. | ||
the usefulness of OutGuess. And if you like it, you can support | ||
me via the links on | ||
|
||
http://www.outguess.org/ | ||
|
||
Installation | ||
------------ | ||
|
@@ -149,6 +87,9 @@ should require only | |
|
||
1. ./configure && make | ||
|
||
There is an optimization bug in gcc, you might have to compile | ||
with -O0. | ||
|
||
If your system is not supported, trying building by hand as follows | ||
|
||
1. Install the JPEG-6b libjpeg.a library and patch it with | ||
|
@@ -162,13 +103,7 @@ OutGuess has only been tested on OpenBSD, Linux, Solaris and AIX. | |
|
||
BUGS: | ||
----- | ||
Not all the redundant data available in the JPEG encoding is used, | ||
this is due to a problem when reconstructing the Huffman coefficients. | ||
I have seen cases when two MCU blocks have only the first coefficient | ||
assigned, that the coefficents are the same and do not represent | ||
the Huffman coefficients that were used when the image was created, | ||
and thus getting the bit stream out of sync. So I just ignore the | ||
first coefficent always. | ||
None known at the moment. | ||
|
||
Acknowledgments: | ||
---------------- | ||
|
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +0,0 @@ | ||
save detecability of bits for bitmaps, as weight | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.