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.
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"
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.
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.
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.
- LICENSE
- Copyright (c) 2013-2025 Frank Denis ([email protected])
- zlib: General-purpose compression library
- License: zlib/libpng license (see LICENSE file)
- Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler