Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
jdvrif — JPG छवियों के लिए स्टेग्नोग्राफ़ी उपकरण | Kitploit
उपकरण/GitHubGitHub/cleasbycode/jdvrif
एन्क्रिप्शन/डिक्रिप्शन उपकरणडेटा निष्कासनफोरेंसिकस्टेग्नोग्राफीक्रिप्टोग्राफीगोपनीयता
GitHubcleasbycode/jdvrif

jdvrif

JPG छवियों के लिए स्टेग्नोग्राफ़ी उपकरण

रिपॉजिटरी देखें
691355 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
# jdvrif

***jdvrif*** (*JPG Data Vehicle*) एक तेज़, उपयोग में आसान स्टेग्नोग्राफ़ी कमांड-लाइन टूल है, जो **JPG** छवि के माध्यम से किसी भी फ़ाइल प्रकार को छिपाने और निकालने के लिए है। ***केवल Linux***।

आपकी डेटा फ़ाइल को ***libdeflate/zlib*** से संपीड़ित किया जाता है, फिर ***XChaCha20-Poly1305*** (***libsodium*** secretstream) से एन्क्रिप्ट किया जाता है, जिसकी कुंजी ***Argon2id*** द्वारा एक यादृच्छिक रूप से उत्पन्न ***recovery PIN*** से व्युत्पन्न की जाती है, और अंत में कवर छवि में एम्बेड किया जाता है। PIN केवल एक बार, ***conceal*** के अंत में प्रदर्शित होता है, और कहीं भी संग्रहीत नहीं किया जाता: इसके बिना छिपाई गई फ़ाइल को पुनर्प्राप्त नहीं किया जा सकता।

***डिफ़ॉल्ट conceal मोड*** का उपयोग करके, आप किसी भी फ़ाइल प्रकार को छिपा सकते हैं, तैयार छवि ***2GiB*** तक सीमित रहती है। अन्य प्लेटफ़ॉर्म conceal मोड और संगत सोशल मीडिया साइटों (*नीचे सूचीबद्ध*) की अपनी ***बहुत छोटी*** आकार सीमाएँ और अन्य आवश्यकताएँ हैं।

***jdvrif*** का एक [***Web संस्करण***](https://cleasbycode.co.uk/jdvrif/app/) है, जिसे आप CLI स्रोत कोड को डाउनलोड और संकलित करने के सुविधाजनक विकल्प के रूप में तुरंत उपयोग कर सकते हैं। Web फ़ाइल अपलोड **20MiB** तक सीमित हैं।

उस भाषा में रुचि रखने वालों के लिए एक प्रयोगात्मक ***Rust*** पोर्ट [***jdvrif-rs***](https://github.com/CleasbyCode/jdvrif-rs) भी उपलब्ध है। यह प्रारूप-संगत है: कोई भी बिल्ड दूसरे की छवियों को पुनर्प्राप्त कर सकता है।

***jdvrif*** आंशिक रूप से सुरक्षा शोधकर्ता ***[David Buchanan](https://www.da.vidbuchanan.co.uk/)*** द्वारा ***[लागू की गई तकनीक](https://www.vice.com/en/article/bj4wxm/tiny-picture-twitter-complete-works-of-shakespeare-steganography)*** से व्युत्पन्न है।

![Demo Image](https://raw.githubusercontent.com/CleasbyCode/jdvrif/main/demo_image/jrif_043b7c551.jpg)  
*Demo Image: **"A place of concealment"** / ***PIN: 7912872750612437051****

## jdvrif डेटा को कैसे छिपाता है

कवर छवि के पिक्सल के भीतर डेटा छिपाने की सामान्य [***LSB***](https://ctf101.org/forensics/what-is-stegonagraphy/) (*Least Significant Bit*) स्टेग्नोग्राफ़ी विधि के विपरीत, ***jdvrif*** अधिकतर डेटा को ***JPG*** छवि के ***application segments*** (ICC, EXIF, XMP, आदि) के भीतर छिपाता है।

| Conceal मोड | डेटा कहाँ जाता है | आउटपुट छवि यहाँ साझा करें |
| --- | --- | --- |
| *(कोई विकल्प नहीं)* | APP2/ICC प्रोफ़ाइल सेगमेंट | X-Twitter, Tumblr, Mastodon, Pixelfed, PostImage, ImgBB, ImgPile, Flickr |
| ***-b*** | फ़्रेमयुक्त EXIF / Photoshop / XMP सेगमेंट | केवल ***Bluesky*** |
| ***-r*** | JPEG DCT गुणांक (***QIM***) | केवल ***Reddit*** |
| ***-x*** | JPEG DCT गुणांक (***J-UNIWARD/STC***) | केवल ***X-Twitter*** |

डिफ़ॉल्ट सेगमेंट संग्रहण विधि के दो प्लेटफ़ॉर्म अपवाद ***Reddit*** और ***X-Twitter*** हैं। दोनों के अपने conceal मोड हैं, और उनमें से कोई भी मोड मेटाडेटा सेगमेंट का उपयोग नहीं करता: ***-r*** और ***-x*** इसके बजाय ***JPG*** छवि के DCT गुणांकों में पेलोड रखते हैं।

***Reddit*** अपलोड की गई छवियों को पुनः-एन्कोड करता है और उन मेटाडेटा सेगमेंट को हटा देता है जिन पर डिफ़ॉल्ट मोड निर्भर करता है, इसलिए ***-r*** ही एकमात्र मोड है जो वहाँ काम करता है। ***X-Twitter*** एक एकल, छोटे ICC सेगमेंट को संरक्षित करता है, इसलिए डिफ़ॉल्ट मोड उस प्लेटफ़ॉर्म पर अभी भी काम करता है, लेकिन केवल एक बहुत छोटे पेलोड के लिए।

***Reddit*** conceal मोड (***-r***) के लिए, हम [***QIM स्टेग्नोग्राफ़ी विधि***](https://www.google.com/search?q=QIM+steganography+method&sourceid=chrome&ie=UTF-8&source=chrome.ctxt) (*JPEG DCT-डोमेन Quantization Index Modulation*) का उपयोग करते हैं, क्योंकि यह वर्तमान में ***Reddit*** के लिए काम करने वाली एकमात्र संग्रहण विधि है। कवर को baseline Q75 4:2:0 में ट्रांसकोड किया जाता है और पेलोड उसके luminance DCT ब्लॉकों में रखा जाता है।

***Reddit*** प्लेटफ़ॉर्म के लिए संग्रहण क्षमता को अधिकतम करने के लिए, बड़े आयाम वाली कवर छवि का उपयोग करें, **2048x2048**, **4096x4096**, **8192x8192 (अधिकतम)**, आदि।

इस विधि के लिए कवर छवि की गुणवत्ता महत्वपूर्ण नहीं है और कवर छवि फ़ाइल आकार को न्यूनतम रखने में मदद के लिए सबसे बड़े आयामों के लिए इसे बुनियादी रखा जाना चाहिए।

जबकि ***X-Twitter*** प्लेटफ़ॉर्म ***jdvrif*** द्वारा प्रदान की गई डिफ़ॉल्ट विधि का उपयोग कर सकता है, जहाँ डेटा APP2/ICC सेगमेंट के भीतर छिपाया जाता है, ***X-Twitter*** इसे केवल **~10KiB** के अधिकतम आकार वाले एकल ICC सेगमेंट तक सीमित करता है।

उससे अधिक **~10KiB** ले जाने के लिए, ***X-Twitter*** प्लेटफ़ॉर्म छिपाव मोड (***-x***) का उपयोग करें। यह मेटाडेटा खंडों को पूरी तरह त्याग देता है — ICC प्रोफ़ाइल में कुछ भी नहीं लिखा जाता — और इसके बजाय [***Syndrome-Trellis Coding (STC) के साथ अनुकूली J-UNIWARD स्टेग्नोग्राफ़ी विधि***](https://www.google.com/search?q=adaptive+J-UNIWARD+steganography+method+with+Syndrome-Trellis+Coding+(STC)) का उपयोग करता है। कवर को उसकी स्रोत-व्युत्पन्न गुणवत्ता (अधिकतम **Q97**) पर प्रगतिशील 4:2:0 में ट्रांसकोड किया जाता है।

***X-Twitter*** प्लेटफ़ॉर्म के लिए भंडारण क्षमता को अधिकतम करने के लिए, बड़े आयाम आकारों वाली उच्च गुणवत्ता/विस्तृत कवर छवि का उपयोग करें, जैसे **1024x1024**, **2048x2048**, **4096x4096 (अधिकतम)**, आदि।

***-r*** और ***-x*** कैरियर आपके डेटा को एन्क्रिप्ट करते हैं और इसके स्थान को ***Argon2id*** का उपयोग करके आपके रिकवरी PIN से जोड़ते हैं, लेकिन एम्बेडिंग अभी भी छवि के DCT आँकड़ों को बदल देती है, इसलिए समर्पित स्टेगैनालिसिस से पता चल सकता है कि किसी छवि में छिपा हुआ डेटा है।

***jdvrif v9.0*** के साथ बनाई गई ***-r*** और ***-x*** छवियाँ पुनर्प्राप्त करने योग्य रहती हैं, लेकिन ***v9.0***, ***v9.1*** के साथ बनाई गई ***-r*** या ***-x*** छवियों को पुनर्प्राप्त नहीं कर सकता।

दोनों DCT मोड डिफ़ॉल्ट मोड की तुलना में बहुत कम डेटा ले जाते हैं, इसलिए पेलोड चुनने से पहले कवर छवि को मापने के लिए ***capsize*** का उपयोग करें (देखें [क्षमता जाँचना](#checking-capacity-with-capsize))।

## आवश्यकताएँ और संकलन (Linux)

बिल्ड के लिए **CMake 3.20 या नया**, **util-linux** से `flock`, और **Ninja** (पसंदीदा) या **Make** में से कोई एक आवश्यक है। कंपाइलर **GCC 14 या नया**, या **Clang 18 या नया** होना चाहिए, जो C++23 मानक लाइब्रेरी के साथ हो जो `std::format` और `std::print` जैसी सुविधाओं को लागू करता हो। आवश्यक नेटिव लाइब्रेरीज़ हैं **libsodium**, **libjpeg-turbo** (*दोनों `turbojpeg` और `libjpeg` API*), **zlib** और **libdeflate**। **OpenMP** वैकल्पिक है: जब मौजूद हो तो यह ***-x*** J-UNIWARD कॉस्ट पास को समानांतरित करता है।

```console
$ sudo apt update
$ sudo apt install g++ cmake ninja-build util-linux libsodium-dev libturbojpeg0-dev libjpeg-dev zlib1g-dev libdeflate-dev

$ g++ --version   # confirm the reported version is 14 or newer

$ chmod +x compile_jdvrif.sh
$ ./compile_jdvrif.sh

$ sudo cp jdvrif /usr/bin
```

यदि आपका वितरण GCC 14 को एक वर्ज़न्ड पैकेज के रूप में प्रदान करता है, तो `g++-14` इंस्टॉल करें और `CXX=g++-14 ./compile_jdvrif.sh` के साथ बिल्ड करें।

रैपर निर्भरता-ट्रैक किए गए ऑब्जेक्ट फ़ाइलों को `src/build/` के अंतर्गत रखता है, इसलिए बाद के आह्वान केवल वही पुनः बिल्ड करते हैं जो बदला है, और यह प्रकाशित `jdvrif` बाइनरी को केवल एक पूर्ण, सफल बिल्ड के बाद ही प्रतिस्थापित करता है। समानांतरता सीमा बदलने के लिए `JDVRIF_JOBS=<count>` सेट करें (डिफ़ॉल्ट: CPU गणना, अधिकतम 8), एक अलग बिल्ड कैश उपयोग करने के लिए `JDVRIF_BUILD_DIR=<path>` सेट करें, या ASan/UBSan बिल्ड के लिए `BUILD_MODE=sanitize` सेट करें।

## उपयोग

```console
$ jdvrif

Usage: jdvrif conceal [-b|-r|-x] <cover_image> <secret_file>
       jdvrif recover <cover_image>
       jdvrif capsize [-r|-x] <cover_image>
       jdvrif --info
```

पूर्ण अंतर्निहित गाइड के लिए, जिसमें मोड, प्लेटफ़ॉर्म विकल्प और आकार सीमाएँ शामिल हैं, `jdvrif --info` चलाएँ।

```console
$ jdvrif conceal your_cover_image.jpg your_secret_file.doc

Platform compatibility for output image:-

 ✓ X-Twitter
 ✓ Tumblr
 ✓ Mastodon
 ✓ Pixelfed
 ✓ PostImage
 ✓ ImgBB
 ✓ ImgPile
 ✓ Flickr

Recovery PIN: [***2166776980318349924***]

Important: Keep your PIN safe, so that you can extract the hidden file.


Saved "file-embedded" JPG image: jrif_4e87c566c.jpg (143029 bytes).

Complete!

$ jdvrif recover jrif_4e87c566c.jpg

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

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

Complete! Please check your file.

```

jdvrif ***mode*** तर्क:

  ***conceal*** - आपकी गुप्त डेटा फ़ाइल को संपीड़ित, एन्क्रिप्ट और एक ***JPG*** कवर छवि के भीतर एम्बेड करता है।  
  ***recover*** - एक ***JPG*** कवर छवि से छिपी डेटा फ़ाइल को डिक्रिप्ट, अनकंप्रेस और निकालता है (*रिकवरी PIN आवश्यक*)।  
  ***capsize*** - ***-r*** या ***-x*** मोड के लिए कवर छवि की कैरियर क्षमता की रिपोर्ट करता है। कोई छवि सहेजी नहीं जाती।

कवर छवि के लिए आवश्यकताएँ:

● केवल JPEG, कम से कम **400x400** पिक्सेल, और या तो ग्रेस्केल या YCbCr रंग — CMYK/YCCK छवियों को पहले RGB में बदला जाना चाहिए।

● डिफ़ॉल्ट और ***-b*** की ऊपरी आयाम सीमा **4096x4096px** है; ***-r*** **8192x8192px** का उपयोग करता है, जबकि ***-x*** भी **4096x4096px** तक सीमित है।

● डिफ़ॉल्ट मोड (*कोई विकल्प नहीं*) उन कवर छवियों को भी अस्वीकार करता है जिनकी अनुमानित JPEG गुणवत्ता **Q97** से अधिक है; यदि छवि अस्वीकार हो जाए तो उसे कम गुणवत्ता पर पुनः सहेजें।

गुप्त डेटा फ़ाइल के लिए आवश्यकताएँ:

● एम्बेड किया गया फ़ाइलनाम **20 बाइट** से अधिक लंबा नहीं होना चाहिए, `.` या `-` से शुरू नहीं होना चाहिए और न ही स्पेस या `.` पर समाप्त होना चाहिए, और यह नियंत्रण या द्विदिशात्मक-फ़ॉर्मेटिंग वर्णों या `/ \ : * ? " < > |` में से किसी के भी बिना वैध UTF-8 होना चाहिए। नाम छवि में संग्रहीत किया जाता है और ***recover*** पर पुनर्स्थापित किया जाता है।

● एन्क्रिप्शन से पहले आपकी डेटा फ़ाइल संपीड़ित की जाती है, सिवाय मान्यता प्राप्त पहले से संपीड़ित फ़ाइल प्रकारों (`.zip`, `.7z`, `.mp4`, `.jpg`, `.png`, आदि) के। डिफ़ॉल्ट और ***-b*** मोड में ये प्रकार संपीड़न केवल तब छोड़ते हैं जब वे **10MiB** से बड़े हों; ***-r*** और ***-x*** मोड में वे इसे हमेशा छोड़ते हैं। किसी भी अन्य चीज़ के लिए जो किसी छोटी प्लेटफ़ॉर्म सीमा के लिए निर्धारित हो, पहले उसे स्वयं संपीड़ित करने पर विचार करें (*zip, rar, 7z, आदि*) ताकि आप उसका सटीक संग्रहीत आकार जान सकें।

## संगत प्लेटफ़ॉर्म

\******************   
नोट: ***Bluesky*** अब डिफ़ॉल्ट रूप से छवियों को ***WEBP*** के रूप में सहेजता है। 

किसी छवि को ***JPG*** के रूप में सहेजने के लिए, ताकि आप ***jdvrif*** के साथ छिपा डेटा अभी भी पुनर्प्राप्त कर सकें:-  

पहले पोस्ट में छवि पर क्लिक करके उसे खोलें, फिर छवि पर राइट-क्लिक करें। मेनू से ***Open image in new tab*** चुनें।  

नया टैब चुनें और एड्रेस बार में, एड्रेस के अंत तक जाएँ और ***@jpg*** जोड़ें फिर एंटर दबाएँ।  
छवि पर राइट-क्लिक करें और मेनू से ***Save image...*** चुनें  

अब आपकी छवि ***JPG*** के रूप में डाउनलोड हो जानी चाहिए, जो अब ***jdvrif*** के साथ काम करेगी।
         
यदि आप ***Bluesky*** पर पोस्ट करने के लिए ***WEBP*** छवियों का उपयोग करके डेटा छिपाने वाला कोई टूल चाहते हैं, तो आप मेरा ***WEBP*** स्टेग्नोग्राफ़ी CLI टूल ***[wbpdv](https://github.com/CleasbyCode/wbpdv)*** उपयोग कर सकते हैं  
\******************

*पोस्टिंग आकार सीमा ***कवर छवि*** + ***संपीड़ित डेटा फ़ाइल*** के ***संयुक्त*** आकार से मापी जाती है:**  

● ***Flickr*** (**200MiB**), ***ImgPile*** (**100MiB**), ***ImgBB*** (**32MiB**), ***PostImage*** (**32MiB**), ***Pixelfed*** (**15MiB**)।

*आकार सीमा ***केवल*** ***संपीड़ित डेटा फ़ाइल आकार*** से मापी जाती है:**  

● ***Mastodon*** (**~6MiB**), ***Tumblr*** (**~64KiB**), ***X-Twitter*** (**~10KiB / डिफ़ॉल्ट विधि**)।  

उदाहरण के लिए, ***Mastodon*** के साथ, यदि आपकी कवर छवि **1MiB** है तो भी आप **~6MiB** आकार सीमा तक एक डेटा फ़ाइल एम्बेड कर सकते हैं।

**अन्य: अपने स्वयं के conceal मोड वाले प्लेटफ़ॉर्म:**

● ***Bluesky*** (***-b विकल्प***)। तैयार "*file-embedded*" ***JPG*** **2,000,000 बाइट (~1.9MiB)** से अधिक नहीं होनी चाहिए, इसलिए कवर छवि और संपीड़ित डेटा फ़ाइल एक ही बजट साझा करते हैं। संपीड़ित डेटा फ़ाइल अकेले **~171KiB** से अधिक नहीं होनी चाहिए। 2,000,000 बाइट पर पहले से मौजूद कवर छवि कोई जगह नहीं छोड़ती, इसलिए कवर को सीमा से कम से कम आपकी संपीड़ित डेटा फ़ाइल के आकार जितना छोटा रखें। इन छवियों को ***Bluesky*** पर पोस्ट करने के लिए "***create_bsky_post.py***" स्क्रिप्ट आवश्यक है। *इस स्क्रिप्ट के बारे में अधिक जानकारी पृष्ठ पर आगे है।*

● ***Reddit*** (***-r विकल्प***)। कवर छवि और डेटा फ़ाइल में से प्रत्येक **20MiB** से बड़ी नहीं होनी चाहिए, लेकिन कवर छवि की वास्तविक कैरियर क्षमता ***बहुत छोटी*** होती है और उसके आयाम आकारों पर निर्भर करती है। इसे मापने के लिए `jdvrif capsize -r` का उपयोग करें।

● ***X-Twitter*** (***-x विकल्प***)। कवर छवि और डेटा फ़ाइल प्रत्येक **5MiB** से बड़ी नहीं होनी चाहिए, और कवर **4096x4096** पिक्सेल से अधिक नहीं होना चाहिए। वास्तविक वाहक क्षमता ***बहुत छोटी*** है और छवि गुणवत्ता तथा आयाम आकार पर निर्भर करती है। इसे मापने के लिए `jdvrif capsize -x` का उपयोग करें।

डिफ़ॉल्ट और ***-b*** मोड में, कवर छवि को उपयोग से पहले दोषरहित रूप से अनुकूलित भी किया जाता है और उस चरण के बाद यह **4MiB** से अधिक नहीं होनी चाहिए।

***X-Twitter***, ***Reddit*** और ***Tumblr*** जैसे प्लेटफ़ॉर्म, जिनकी डेटा आकार सीमाएँ छोटी हैं, के लिए आप ऐसे डेटा पर ध्यान केंद्रित करना चाह सकते हैं जो अच्छी तरह संपीड़ित होता है, जैसे टेक्स्ट फ़ाइलें, आदि।

https://github.com/user-attachments/assets/af330d09-f65d-4f75-8290-883078be34b3

https://github.com/user-attachments/assets/fc454d42-0240-4864-b44b-ce5ef7cfd94c

## capsize के साथ क्षमता जाँचना

***capsize*** कवर छवि को ठीक वैसे ही तैयार करता है जैसे ***conceal*** करेगा, फिर बताता है कि यह कितना एन्क्रिप्टेड पेलोड वहन कर सकती है। डिस्क पर कुछ भी नहीं लिखा जाता। ***Reddit*** वाहक के लिए ***-r*** और ***X-Twitter*** वाहक के लिए ***-x*** का उपयोग करें (यदि कोई विकल्प नहीं दिया गया है तो ***-x*** डिफ़ॉल्ट है)।

```console
$ jdvrif capsize -r basic_img_large_dims.jpg

Reddit capacity check for conceal -r mode only.

Cover Image: 384KiB, 8192x8192, Baseline YCbCr 4:2:0, Standard Q75 quantization (C3).

Theoretical C3 capacity limit for this cover image:                    436906 bytes (~426KiB).
Conservative maximum compressed capacity with a 20-character filename: 436792 bytes (~426KiB).
Recommended  maximum compressed capacity with a 20-character filename: 435768 bytes (~425KiB).
```

रिपोर्ट की गई संख्या कुल एन्क्रिप्टेड ***envelope*** क्षमता है, न कि कच्ची secret-file सीमा: फ़ाइलनाम, एन्क्रिप्शन और रिकवरी मेटाडेटा एकल-फ़्रेम payload के लिए 95 से 114 बाइट्स लेते हैं, और बड़े payload अतिरिक्त framing overhead जोड़ते हैं। सैद्धांतिक सीमा को लक्ष्य न बनाएं — जहाँ क्षमता अनुमति दे, संपीड़ित payload को रूढ़िवादी अधिकतम से कम से कम **1KiB** नीचे रखें। ***conceal*** द्वारा किया गया आकार जाँच ही आधिकारिक है।

## Conceal mode प्लेटफ़ॉर्म विकल्प

***Reddit*** प्लेटफ़ॉर्म पर पोस्ट करने के लिए संगत "*data-concealed*" ***JPG*** छवियाँ बनाने हेतु, आपको ***conceal*** mode के साथ ***-r*** विकल्प का उपयोग करना होगा।
  ```console
  $ jdvrif conceal -r my_image.jpg hidden.doc
```

  ये छवियाँ केवल ***Reddit*** पर पोस्ट करने के लिए संगत हैं। किसी अन्य प्लेटफ़ॉर्म पर पोस्ट करने पर आपकी एम्बेडेड डेटा फ़ाइल खो जाएगी।  
  
***Reddit*** से कोई छवि सहेजते/डाउनलोड करते समय सुनिश्चित करें कि सहेजने से पहले पोस्ट के भीतर छवि पर क्लिक करके उसे पूरी तरह से विस्तृत कर लें।  

https://github.com/user-attachments/assets/ead3c34c-dd9a-4018-9ea3-0746fbdfdb8b

***X-Twitter*** प्लेटफ़ॉर्म पर पोस्ट करने के लिए J-UNIWARD स्टेग्नोग्राफ़ी विधि का उपयोग करके संगत "*data-concealed*" ***JPG*** छवियाँ बनाने के लिए, आपको ***conceal*** मोड के साथ ***-x*** विकल्प का उपयोग करना होगा।
  ```console
  $ jdvrif conceal -x my_image.jpg hidden.doc
```

  ये छवियाँ केवल ***X-Twitter*** पर पोस्ट करने के लिए संगत हैं। किसी भिन्न प्लेटफ़ॉर्म पर पोस्ट करने पर आपकी एम्बेडेड डेटा फ़ाइल खो जाएगी।  
  
***X-Twitter*** से कोई छवि सहेजते/डाउनलोड करते समय सुनिश्चित करें कि सहेजने से पहले पोस्ट के भीतर छवि पर क्लिक करके उसे पूरी तरह से विस्तृत कर लें।  

***Bluesky*** प्लेटफ़ॉर्म पर पोस्ट करने के लिए संगत "*file-embedded*" ***JPG*** छवियाँ बनाने के लिए, आपको ***conceal*** मोड के साथ ***-b*** विकल्प का उपयोग करना होगा।
  ```console
  $ jdvrif conceal -b my_image.jpg hidden.doc
```

  ये छवियाँ केवल ***Bluesky*** पर पोस्ट करने के लिए संगत हैं। यदि किसी भिन्न प्लेटफ़ॉर्म पर पोस्ट किया जाता है, तो आपकी एम्बेडेड डेटा फ़ाइल हटा दी जाएगी।
 
छवि को ***Bluesky*** पर पोस्ट करने के लिए आपको Python स्क्रिप्ट [create_bsky_post.py](https://github.com/CleasbyCode/jdvrif/blob/main/src/bsky/create_bsky_post.py) (जो रेपो के ***src/bsky*** फ़ोल्डर में मौजूद है) का उपयोग करना भी आवश्यक है।
यह काम नहीं करेगा यदि आप ब्राउज़र साइट या मोबाइल ऐप के माध्यम से ***Bluesky*** पर छवियाँ पोस्ट करते हैं।

स्क्रिप्ट का उपयोग करने के लिए, आपको अपने ***Bluesky*** खाते से एक [***app password***](https://bsky.app/settings/app-passwords) बनाना होगा। अपने क्रेडेंशियल्स को कमांड लाइन पर देने के बजाय environment के माध्यम से पास करें, जहाँ वे `ps` जैसे टूल्स के ज़रिए अन्य स्थानीय उपयोगकर्ताओं को दिखाई दे सकते हैं:

  ```console
  $ pip install -r bsky/requirements.txt

  $ export ATP_AUTH_HANDLE='you.bsky.social'
  $ read -rsp 'Bluesky app password: ' ATP_AUTH_PASSWORD && export ATP_AUTH_PASSWORD

  $ python3 bsky/create_bsky_post.py \
      --image jrif_4e87c566c.jpg \
      --alt-text "alt-text here [optional]" \
      "standard post text here [required]"

  $ unset ATP_AUTH_PASSWORD
```

  पूर्ण विकल्पों के सेट (*एकाधिक छवियाँ, उत्तर, कोट पोस्ट, लिंक कार्ड*) और स्क्रिप्ट के हार्डन किए गए फोर्क किन चीज़ों से सुरक्षा प्रदान करता है, इसके लिए [src/bsky/README.md](https://github.com/CleasbyCode/jdvrif/blob/main/src/bsky/README.md) देखें।

https://github.com/user-attachments/assets/1daef508-d304-491f-bfe2-2cdbb5d62081

## परीक्षण

`src/tests` में मौजूद प्रत्येक टेस्ट स्क्रिप्ट उस बाइनरी को लेती है जिस पर परीक्षण करना है:

---

[Read more](https://github.com/cleasbycode/jdvrif)
टूल डाउनलोड करें