Skip to content
/ jdvrif Public

CLI tool to embed or extract files via a JPG image. Post & share your embedded JPG image on compatible sites.

License

Notifications You must be signed in to change notification settings

xet7/jdvrif

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

jdvrif

A simple command-line tool used to embed or extract any file type via a JPG image.

Post & share your file-embedded JPG image(s) on the following compatible sites.

  • Flickr (200MB), *ImgPile (100MB), ImgBB (32MB), PostImage (24MB),
  • *Reddit (20MB), *Imgur (20MB), Mastodon (16MB), Twitter (10KB).

jdvrif partly derives from the technique discovered by security researcher David Buchanan.

Demo Image
Image credit: @shikoba_86
{Image embedded with encrypted mp3 music file. Extract: jdvrif -x wolf.jpg}

Video Demos: Mastodon / Reddit / Twitter / Multiple files

Your data file is encrypted & inserted within multiple 65KB ICC Profile blocks in the JPG image file.

ICC

Using jdvrif, you can insert up to eight files at a time (outputs one image per file).
(jdvrif -i image.jpg file1.mp3 file2.doc file3.zip, etc.)

You can also extract files from up to eight images at a time.
(jdvrif -x jdv_img1.jpg jdv_img2.jpg jdv_img3.jpg, etc.)

When posting a jdvrif JPG image on Reddit, always select the "Image & Video" box.

POST

When saving a jdvrif JPG image from Reddit, click the image in the post to expand it, then save it.
You should see the file name with a .jpg extension in the address bar of your browser.

POST

When saving a jdvrif JPG image from Twitter, always click the image first to fully expand it, before saving.

Compile and run the program under Windows or Linux.

Usage Demo

user1@linuxbox:~/Desktop$ g++ jdvrif.cpp -O2 -s -o jdvrif
user1@linuxbox:~/Desktop$ ./jdvrif 

Usage: jdvrif -i <cover_image> <data_file>  
       jdvrif -x <embedded_image>  
       jdvrif --info

user1@linuxbox:~/Desktop$ ./jdvrif -i rabbit.jpg document.pdf
  
Insert mode selected.

Reading files. Please wait...

Encrypting data file.

Embedding data file within the ICC Profile of the JPG image.

Writing data-embedded JPG image out to disk.

Created data-embedded JPG image: "jdv_img1.jpg" Size: "1218285 Bytes".

Complete!

You can now post your data-embedded JPG image(s) on the relevant supported platforms.

user1@linuxbox:~/Desktop$ ./jdvrif -x jdv_img1.jpg

Extract mode selected.

Reading embedded JPG image file. Please wait...

Found jdvrif embedded data file.

Extracting encrypted data file from the JPG image.

Decrypting extracted data file.

Writing decrypted data file out to disk.

Saved file: "document.pdf" Size: "1016540 Bytes"

Complete! Please check your extracted file(s).

user1@linuxbox:~/Desktop$ 

Issues:

  • Reddit - Does not work with Reddit's mobile app. Desktop/browser only.
  • Imgur - Retains embedded data, but reduces the dimension size of images over 5MB.
  • ImgPile - You must sign in to an account before sharing your data-embedded JPG image on ImgPile.
    Sharing your image without logging in, your embedded data will not be preserved.

My other programs you may find useful:-

About

CLI tool to embed or extract files via a JPG image. Post & share your embedded JPG image on compatible sites.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages