Skip to content

CleasbyCode/pdvrdt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

pdvrdt

A steganography command-line tool used for embedding and extracting any file type via a PNG cover image.

There is also a Web App version, which you can try here as a convenient alternative to downloading and compiling the CLI source code. Web file uploads are limited to 20MB.

Demo Image
Image: "Wolf" / PIN: 1816136426548255229

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 embed 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 (if not already a compressed file type) and encrypted using the Libsodium cryptographic library.

X_Twitter_CLI_PNG_TXT.mp4
Web_PNG_JPG.mp4

Image credit: "Red_Dragon / @ultra_arcane"

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.

Usage (Linux)

user1@mx:~/Downloads/pdvrdt-main/src$ sudo apt-get install libsodium-dev
user1@mx:~/Downloads/pdvrdt-main/src$ chmod +x compile_pdvrdt.sh
user1@mx:~/Downloads/pdvrdt-main/src$ ./compile_pdvrdt.sh
user1@mx:~/Downloads/pdvrdt-main/src$ Compilation successful. Executable 'pdvrdt' created.
user1@mx:~/Downloads/pdvrdt-main/src$ sudo cp pdvrdt /usr/bin

user1@mx:~/Desktop$ pdvrdt 

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

user1@mx:~/Desktop$ 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!
        
user1@mx:~/Desktop$ pdvrdt recover prdt_12462.png

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

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

Complete! Please check your file.

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