Skip to content

Java implementation of LSB and BPCS steganography

Notifications You must be signed in to change notification settings

simonsben/Dead-Drop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Future features

  • Add checksums
  • Add compression be default
  • Enable public key cipher

Format

  • 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.

Usage

For both encode and decode, call encoding handler with the following parameters:

  • Specify encode with -E (or -D for decode), followed by either B or A to use the basic or advanced encoder, respectively.
  • Choose the technique with -T followed by either N or B 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.

Encoding

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.

Decoding

To decode, also pass the following parameters

  • Pass -d data_file to specify the path where you would like to save the embedded file

Environment

Project was developed using Java 13 with no additional dependencies.

About

Java implementation of LSB and BPCS steganography

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages