{"id":21680705,"url":"https://github.com/cleasbycode/jdvrif","last_synced_at":"2025-05-09T02:20:25.442Z","repository":{"id":158441517,"uuid":"628351391","full_name":"CleasbyCode/jdvrif","owner":"CleasbyCode","description":"Steganography CLI \u0026 Web tool for concealing files within JPG images.","archived":false,"fork":false,"pushed_at":"2025-05-06T16:41:19.000Z","size":168863,"stargazers_count":45,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-06T17:46:04.606Z","etag":null,"topics":["bluesky","bsky","cli-tools","cryptography","data-hiding","exif","hidden-files","hide-data","hide-files-in-image","icc-profile","infosec","jpg","libsodium","mastodon","privacy-tools","steganography","tumblr","x-platform","xmp-metadata","zlib"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CleasbyCode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-04-15T17:15:39.000Z","updated_at":"2025-05-06T16:41:22.000Z","dependencies_parsed_at":"2024-01-30T23:47:42.956Z","dependency_job_id":"0c907d9d-c4f5-4479-8c0b-30d5da882959","html_url":"https://github.com/CleasbyCode/jdvrif","commit_stats":null,"previous_names":["cleasbycode/jdvrif"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleasbyCode%2Fjdvrif","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleasbyCode%2Fjdvrif/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleasbyCode%2Fjdvrif/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleasbyCode%2Fjdvrif/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CleasbyCode","download_url":"https://codeload.github.com/CleasbyCode/jdvrif/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253176574,"owners_count":21866165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluesky","bsky","cli-tools","cryptography","data-hiding","exif","hidden-files","hide-data","hide-files-in-image","icc-profile","infosec","jpg","libsodium","mastodon","privacy-tools","steganography","tumblr","x-platform","xmp-metadata","zlib"],"created_at":"2024-11-25T15:20:07.050Z","updated_at":"2025-05-09T02:20:25.429Z","avatar_url":"https://github.com/CleasbyCode.png","language":"C","readme":"# jdvrif\n\n***jdvrif*** is a *\"steganography-like\"* utility for ***Linux*** and ***Windows***. It consists of two CLI tools, ***jdvin***, *used for embedding a data file within a ***JPG*** cover image*, and ***jdvout***, *used for extracting the hidden file from the cover image.*  \n\nThere is also a [***jdvrif Web App,***](https://cleasbycode.co.uk/jdvrif/index/) available to use, if you don't want to download and compile the CLI source code.  *Web file uploads are limited to 20MB.*    \n\n![Demo Image](https://github.com/CleasbyCode/jdvrif/blob/main/demo_image/jrif_60228.jpg)  \n*Image credit: **\"Camouflage\"** is the work of [***@carochan_me***](https://x.com/carochan_me) / ***PIN: 11455761492008362387****\n\nUnlike the common steganography method of concealing data within the pixels of a cover image ([***LSB***](https://ctf101.org/forensics/what-is-stegonagraphy/)), ***jdvrif*** hides files within ***application segments*** of a ***JPG*** image. 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.  \n\nFor increased storage capacity and better security, your embedded data file is compressed with ***zlib/deflate*** (*if not already a compressed file type*) and encrypted using the ***libsodium*** cryptographic library.  \n\n***jdvrif*** partly derives from the ***[technique implemented](https://www.vice.com/en/article/bj4wxm/tiny-picture-twitter-complete-works-of-shakespeare-steganography)*** by security researcher ***[David Buchanan](https://www.da.vidbuchanan.co.uk/).*** \n\n*Limit measured by the combined size of the cover image + compressed data file:*  \n● ***Flickr*** (**200MB**), ***ImgPile*** (**100MB**), ***ImgBB*** (**32MB**), ***PostImage*** (**32MB**), ***Reddit*** (**20MB** | ***-r option***).  \n\n*Limit measured by just the compressed data file size:*  \n● ***Mastodon*** (**~6MB**), ***Tumblr*** (**~64KB**), ***Twitter*** (**~10KB**).  \n\n**Other:*  \n● ***Bluesky*** (***Image:*** **800KB** | ***Compressed data file:*** **~106KB** | ***-b option***).  \n*Use the \"***bsky_post.py***\" script, found within the ***src folder*** of this repo, to post images on ***Bluesky***.*\n  \n## Usage (Linux - jdvin / jdvout)\n\n```console\n\nuser1@linuxbox:~/Downloads/jdvrif-main/src/jdvin$ sudo apt-get install libsodium-dev\nuser1@linuxbox:~/Downloads/jdvrif-main/src/jdvin$ sudo apt-get install libturbojpeg-dev\nuser1@linuxbox:~/Downloads/jdvrif-main/src/jdvin$ g++ main.cpp -O2 -lz -lsodium -lturbojpeg -s -o jdvin\nuser1@linuxbox:~/Downloads/jdvrif-main/src/jdvin$ sudo cp jdvin /usr/bin\n\nuser1@linuxbox:~/Desktop$ jdvin \n\nUsage: jdvin [-b|-r] \u003ccover_image\u003e \u003csecret_file\u003e  \n       jdvin --info\n\nuser1@linuxbox:~/Desktop$ jdvin Cover_Image.jpg Hidden_File.zip\n  \nSaved \"file-embedded\" JPG image: jrif_12462.jpg (143029 bytes).\n\nRecovery PIN: [***2166776980318349924***]\n\nImportant: Keep your PIN safe, so that you can extract the hidden file.\n\nComplete!\n\nuser1@linuxbox:~/Downloads/jdvrif-main/src/jdvout$ g++ main.cpp -O2 -lz -lsodium -s -o jdvout\nuser1@linuxbox:~/Downloads/jdvrif-main/src/jdvout$ sudo cp jdvout /usr/bin\n\nuser1@linuxbox:~/Desktop$ jdvout\n\nUsage: jdvout \u003cfile_embedded_image\u003e\n       jdvout --info\n        \nuser1@linuxbox:~/Desktop$ jdvout jrif_12462.jpg\n\nPIN: *******************\n\nExtracted hidden file: Hidden_File.zip (6165 bytes).\n\nComplete! Please check your file.\n\n```\nTo correctly download images from ***X/Twitter*** or ***Reddit***, click the image in the post to ***fully expand it***, before saving.  \n\nhttps://github.com/user-attachments/assets/7b6485f2-969d-47d4-86a7-c9b22920ee0a\n\nTo create \"*file-embedded*\" ***JPG*** images compatible for posting on ***Reddit***, use the ***-r*** option with ***jdvin***.  \nFrom the ***Reddit*** site, click \"*Create Post*\" then select \"*Images \u0026 Video*\" tab, to post your ***JPG*** image.  \n\nhttps://github.com/user-attachments/assets/28553eaa-4162-43c5-b596-f6ab676c1b61\n\nTo create \"*file-embedded*\" ***JPG*** images compatible for posting on ***Bluesky***, use the ***-b*** option with ***jdvin***.\n\nFor ***Bluesky***, you are required to use the ***Python*** script \"*bsky_post.py*\" (found in the repo ***src*** folder), to post the image.\nIt will not work if you post images via the ***Bluesky*** browser site or mobile app.\n\nBluesky script example:\n```console\n$ python3 bsky_post.py --handle exampleuser.bsky.social --password pxae-f17r-alp4-xqka --image jrif_11050.jpg --alt-text \"*text to describe image, here...*\" \"*standard text to appear in main post, here...*\"\n```\nYou will need to create an app password from your ***Bluesky*** account. (*https://bsky.app/settings/app-passwords*)\n\nhttps://github.com/user-attachments/assets/dcc7c31d-4bec-4741-81e5-3b70fd6c29f5\n\nhttps://github.com/user-attachments/assets/b4dee070-2325-4fbc-bcc2-62eea24b2a69\n\nWith ***X/Twitter,*** ***Bluesky,*** \u0026 ***Tumblr***, the small size limits are measured by the ***data file size*** and not the combined image + data file size.\nAs the embedded data file is compressed with ***jdvin*** using ***zlib/deflate*** (*if not already a compressed file type*), you should be able to get significantly more than the default size limit, especially for text documents and other file types that compress well. You may wish to compress the data file yourself (***zip, rar, 7z***, etc) before embedding it with ***jdvin***, so as to know exactly what the compressed file size will be.\n\nAlso with ***Mastodon***, the size limit is measured by the ***data file size*** and not the combined image + data file size.  \nFor example, if your cover image is **1MB** you can still embed a data file up to the **~6MB** ***Mastodon*** size limit.\n\nhttps://github.com/user-attachments/assets/ba338a2b-5c38-4cb7-808b-83a642fc618c\n\nhttps://github.com/user-attachments/assets/5a9fb804-3354-44ce-ab09-064d446bde42\n\nTo correctly download an image from ***Flickr***, click the download arrow near the bottom right-hand corner of the page and select ***Original*** for the size of image to download.\n\nhttps://github.com/user-attachments/assets/3f393e2c-145f-49ab-a952-d2b120bad9f9\n\n## Third-Party Libraries\n\nThis project makes use of the following third-party libraries:\n\n- **libsodium**: For cryptographic functions.\n  - [**LICENSE**](https://github.com/jedisct1/libsodium/blob/master/LICENSE)\n  - Copyright (C) 2013-2025 Frank Denis (github@pureftpd.org)\n- libjpeg-turbo (see [***LICENSE***](https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/LICENSE.md) file)  \n  - {This software is based in part on the work of the Independent JPEG Group.}\n  - Copyright (C) 2009-2024 D. R. Commander. All Rights Reserved.\n  - Copyright (C) 2015 Viktor Szathmáry. All Rights Reserved.\n- **zlib**: General-purpose compression library\n  - License: zlib/libpng license (see [***LICENSE***](https://github.com/madler/zlib/blob/develop/LICENSE) file)\n  - Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler\n    \n##\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcleasbycode%2Fjdvrif","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcleasbycode%2Fjdvrif","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcleasbycode%2Fjdvrif/lists"}