Skip to content

CleasbyCode/pdvrdt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,435 Commits
 
 
 
 
 
 
 
 

Repository files navigation

pdvrdt

pdvrdt is a fast, easy-to-use steganography command-line tool used for concealing and extracting any file type via a PNG image.

There is also a Web edition, which you can use immediately, as a convenient alternative to downloading and compiling the CLI source code. Web file uploads are limited to 20MB.

Demo Image
Image: "Wolf" / PIN: 1856140514119088821

Unlike the common steganography method of concealing data within the pixels of a cover image (LSB), pdvrdt hides files within various chunks of a PNG image, such as iCCP and IDAT.

You can conceal any file type up to 2GB, although compatible hosting sites (listed below) have their own much smaller size limits and *other requirements.

For increased storage capacity and better security, your embedded data file is compressed with zlib and encrypted using the libsodium cryptographic library.

Usage (Linux)

$ sudo apt install libsodium-dev
$ chmod +x compile_pdvrdt.sh
$ ./compile_pdvrdt.sh

Compiling pdvrdt (hardened release build)...
Compilation successful. Executable 'pdvrdt' created.

$ sudo cp pdvrdt /usr/bin
$ pdvrdt 

Usage: pdvrdt conceal [-m|-r] <cover_image> <secret_file>
       pdvrdt recover <cover_image>  
       pdvrdt --info

$ pdvrdt conceal your_cover_image.png your_secret_file.doc

Platform compatibility for output image:-

  ✓ X-Twitter
  ✓ ImgPile
  ✓ PostImage
  ✓ ImgBB
  ✓ Flickr
  
Saved "file-embedded" PNG image: prdt_12462.png (143029 bytes).

Recovery PIN: [***2166776980318349924***]

Important: Keep your PIN safe, so that you can extract the hidden file.

Complete!
        
$ pdvrdt recover prdt_12462.png

PIN: *******************

Extracted hidden file: your_secret_file.doc (6165 bytes).

Complete! Please check your file.

Compatible Platforms

Posting size limit measured by the combined size of the cover image + compressed data file:

  • Flickr (200MB), ImgBB (32MB), PostImage (32MB), Reddit (19MB | -r option),
  • Mastodon (16MB | -m option), ImgPile (8MB), X-Twitter (5MB + *Dimension limits, see below)

X-Twitter image dimension size limits:

  • *PNG-32/24 (Truecolor) 68x68 Min. - 900x900 Max.
  • PNG-8 (Indexed-color) 68x68 Min. - 4096x4096 Max.
X_Twitter_CLI_PNG_TXT.mp4
Web_PNG_TXT.mp4

pdvrdt mode arguments:

conceal - Compresses, encrypts and embeds your secret data file within a PNG cover image.
recover - Decrypts, uncompresses and extracts the concealed data file from a PNG cover image.

pdvrdt conceal mode platform options:

"-m" - To create compatible "file-embedded" PNG images for posting on the Mastodon platform, you must use the -m option with conceal mode.

$ pdvrdt conceal -m my_image.png hidden.doc

"-r" - To create compatible "file-embedded" PNG images for posting on the Reddit platform, you must use the -r option with conceal mode.

$ pdvrdt conceal -r my_image.png secret.mp3 

From the Reddit site, select "Create Post" followed by "Images & Video" tab, to attach and post your PNG image.

To correctly download images from X-Twitter or Reddit, click the image in the post to fully expand it, before saving.

Third-Party Libraries

This project makes use of the following third-party libraries:

  • LodePNG by Lode Vandevenne
    • License: zlib/libpng (see LICENSE file)
    • Copyright (c) 2005-2024 Lode Vandevenne
  • libsodium for cryptographic functions.
  • zlib: General-purpose compression library
    • License: zlib/libpng license (see LICENSE file)
    • Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler