https://github.com/cleasbycode/pdvrdt
Steganography CLI / Web tool for concealing files within PNG images.
https://github.com/cleasbycode/pdvrdt
cli-tools compression conceal conceal-data data-hiding encryption hacking-tool hidden-files hidden-message hide-data hide-files-in-image icc-profile infosec mastodon png privacy privacy-tools steganography twitter x-platform
Last synced: 5 months ago
JSON representation
Steganography CLI / Web tool for concealing files within PNG images.
- Host: GitHub
- URL: https://github.com/cleasbycode/pdvrdt
- Owner: CleasbyCode
- License: mit
- Created: 2023-01-26T19:08:43.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-12-06T09:51:23.000Z (about 1 year ago)
- Last Synced: 2024-12-06T22:38:49.616Z (about 1 year ago)
- Topics: cli-tools, compression, conceal, conceal-data, data-hiding, encryption, hacking-tool, hidden-files, hidden-message, hide-data, hide-files-in-image, icc-profile, infosec, mastodon, png, privacy, privacy-tools, steganography, twitter, x-platform
- Language: C++
- Homepage:
- Size: 67.7 MB
- Stars: 7
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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***](https://cleasbycode.co.uk/pdvrdt/index/) 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***](https://ctf101.org/forensics/what-is-stegonagraphy/)), ***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.
https://github.com/user-attachments/assets/76732196-815b-45ac-b71d-6e1aca672e25
https://github.com/user-attachments/assets/7a1557d1-4772-4d3d-94a6-ec58d0977a59
*Image credit: ***"Red_Dragon / [@ultra_arcane](https://x.com/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)
```console
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]
pdvrdt recover
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.
```console
$ 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.
```console
$ 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***](https://github.com/lvandeve/lodepng/blob/master/LICENSE) file)
- Copyright (c) 2005-2024 Lode Vandevenne
- [**libsodium**](https://libsodium.org/) for cryptographic functions.
- [**LICENSE**](https://github.com/jedisct1/libsodium/blob/master/LICENSE)
- Copyright (c) 2013-2025 Frank Denis (github@pureftpd.org)
- **zlib**: General-purpose compression library
- License: zlib/libpng license (see [***LICENSE***](https://github.com/madler/zlib/blob/develop/LICENSE) file)
- Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler
##