Dead drop is a program that allows data to be hidden within images using either Least Significant Bit (LSB) or Bit-Plane Complexity Segmentation (BPCS) techniques.
- Add checksums
- Add compression be default
- Enable public key cipher
- Encoding header
- 1 byte for encoding type + technique + signature
- 4 bytes for number of bytes in data
- 1 byte for image index (if mode 1)
- 2 bytes sequence ID (if mode 1)
- Encoding type
- 0 single-file (default)
- 1 multi-file indexed
- Techniques
- 0 naive (default)
- 1 bpcs
First byte of header uses the bottom bit (LSB) for encoding type, the second LSB for technique, and the top 5 bits for encoding signature. The signature should inform the program whether an image contains encoded information. The probability of having all 6 bits match the assigned signature would be 1/2^6 or ~1.6% (assuming pixels are uniform). Once the header format/encoding types are more developed more bits may be allocated to the signature to reduce the probability of error.
For both encode and decode, call encoding handler with the following parameters:
- Specify encode with
-E
(or-D
for decode), followed by eitherB
orA
to use the basic or advanced encoder, respectively. - Choose the technique with
-T
followed by eitherN
orB
for naive or bpcs, respectively. - Give the path to the directory containing the images with
-s source_directory
. - [Optionally] pass a custom encryption key to encoder with
-k custom_key
.
To encode, also pass the following parameters:
- Pass
-d data_file
to specify the file you would like to embed.- NOTE: if you have a set of files, compress them first (or just use tar as a container).
- Give the target directory to save the images to with
-t target_directory
.
To decode, also pass the following parameters
- Pass
-d data_file
to specify the path where you would like to save the embedded file
Project was developed using Java 13 with no additional dependencies.