-
Notifications
You must be signed in to change notification settings - Fork 3
/
README
101 lines (72 loc) · 3.55 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
hide
====
hide is a steganographic tool for hiding data in, and retrieving data
from, images.
About
-----
Warning: hide is currently in the beta stages of development!
hide is a steganographic tool for hiding data in, and retrieving data
from, images; this is all it does. It (currently) supports BMP, JPEG,
PNG, TIFF and Webp images, though might support other image formats in
the future. With the exception of JPEG's, the image with the hidden data
will be a 32-bit pre pixel image; 3 × 8-bits per RGB and a further
8-bits for transparency.
A list of things the hide isn't:
* An encryption tool
* A compression tool
If you need either of these things doing (which you really should -
don't use just one layer of security but many complimentary layers)
then checkout [encrypt][] as it does both of those things.
Usage
-----
There are three possible usages of hide:
hide <image> <document> <output>
hide <image> <output>
hide <image>
The first will hide the document in the first image and produce an
output image which contains the hidden data. The second will retrieve,
and place into the output file, a previously hidden file. And finally,
the third will show the images capacity for hiding a file in the given
image.
You can also use the script:
./truly-hide <image> [file]
This will first encrypt the file (using encrypt, of course) and then
hide it. Using this script there is no metadata leakage about what may,
or may not, be hidden in a particular image, as it uses the advanced
functionality of encrypt of not creating a recognizable container. Omit
[file] to recover a previously encrypted and hidden file (it will be
extracted to the current directory).
Image Formats
-------------
Different image formats will provide different capabilities when hiding
data. More often than not the resultant image will have a greater file
size than the original, sometimes by an order of magnitude.
Uncompressed BMP images are (currently) the only image format where the
file size does not change. PNG and TIFF images often have larger file
sizes with hidden data but this isn't always the case. JPEG's have the
smallest capacity of all the currently supported formats because of how
the hidden data is stored, and can often increase the file size
dramatically. Webp images can suffer from massive file size increases
especially if the original was lossy, otherwise can be as capable as PNG
and TIFF.
Sample Images
-------------
The sample images provide an example to demonstrate what could be
considered a worse case scenario. Each image with hidden data is filled
to capacity with random data, plain text, or a single byte of hidden
data.
Image | File Size | Ratio
Format | Original Image | Random | Text | 1 Byte | Random | Text | 1 Byte
-------+----------------+------------+------------+------------+--------+-------+--------
BMP | 3,978,218 | 3,978,218 | 3,978,218 | 3,978,218 | 100% | 100% | 100%
JPEG | 386,716 | 1,136,084 | 1,136,099 | 1,135,270 | 294% | 294% | 294%
PNG | 1,823,156 | 2,248,197 | 2,137,849 | 1,814,704 | 123% | 117% | 99%
TIFF | 1,955,268 | 4,154,698 | 3,393,644 | 3,779,120 | 212% | 174% | 193%
Webp | 1,478,702 | 2,125,684 | 1,800,902 | 1,473,176 | 144% | 122% | 99%
Known Issues
------------
* Debian/Slackware
- WebP library doesn't compile
- Missing definition for lossless image encoding (Debian)
- Missing entire header for encoding (Slackware)
[encrypt]: https://albinoloverats.net/projects/encrypt