
File Injector एक स्क्रिप्ट है जो आपको स्टेग्नोग्राफी का उपयोग करके किसी भी फ़ाइल को एक इमेज में संग्रहीत करने की अनुमति देती है।
File Injector एक स्क्रिप्ट है जो आपको किसी भी फ़ाइल (.zip, .png, .txt, .gba...) और उसके फ़ाइल नाम को एक छवि/ऑडियो में शोर के रूप में संग्रहीत करने की अनुमति देती है, स्टेग्नोग्राफ़ी का उपयोग करके।
आप संग्रहीत करने से पहले इनपुट फ़ाइल को एन्क्रिप्ट करने का विकल्प भी चुन सकते हैं।
फिर, संशोधित छवि/ऑडियो से फ़ाइल निकालने के लिए, आपको मूल छवि/ऑडियो की आवश्यकता नहीं है, केवल एन्क्रिप्शन कुंजी की आवश्यकता है यदि फ़ाइल एन्क्रिप्ट की गई हो।
python3 -m pip install -r requirements.txt
यदि वह काम नहीं करता है, तो आप प्रयास कर सकते हैं:
py -m pip install -r requirements.txt
python3 main.py
फ़ाइल संग्रहीत करने के लिए files/base फ़ोल्डर से एक आधार छवि/ऑडियो चुनें।
आप इस फ़ोल्डर में अपनी खुद की छवियाँ/ऑडियो भी जोड़ सकते हैं।
.png या (.jpg/.jpeg) हो सकती हैं, लेकिन स्क्रिप्ट चलने पर वे .png में परिवर्तित हो जाएँगी।.mp3 या .wav होना चाहिए, लेकिन स्क्रिप्ट चलने पर वे .mp3 में परिवर्तित हो जाएँगे।files/input फ़ोल्डर से छवि/ऑडियो में संग्रहीत करने के लिए एक फ़ाइल चुनें।
आप इस फ़ोल्डर में अपनी खुद की फ़ाइलें जोड़ सकते हैं। वे किसी भी प्रकार की फ़ाइलें हो सकती हैं।
फ़ाइल निकालने के लिए files/modified फ़ोल्डर से एक संशोधित छवि/ऑडियो चुनें।
आप इस फ़ोल्डर में अपनी खुद की संशोधित छवियाँ/ऑडियो भी जोड़ सकते हैं।
आप files/$encryption-keys फ़ोल्डर से एक कुंजी चुन सकते हैं या वहाँ एक नई कुंजी उत्पन्न कर सकते हैं।
कुंजी फ़ाइल का एक्सटेंशन .key होना चाहिए
किसी फ़ाइल को डिक्रिप्ट करते समय आपको कोई विशेष कुंजी चुनने की आवश्यकता नहीं है, यह फ़ोल्डर से स्वचालित रूप से चुनी जाएगी।
इस 17.1MP छवि में एन्क्रिप्टेड 9MB .zip फ़ाइल और उसका फ़ाइल नाम शोर के रूप में संग्रहीत है।
<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/main/readme-assets/17"1MP_mod.png" width=500>
इस 1.7MP छवि में एन्क्रिप्टेड 0.93MB .zip फ़ाइल और उसका फ़ाइल नाम शोर के रूप में संग्रहीत है।
<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/main/readme-assets/1"7MP_mod.png" width=500>
इस 42MB ऑडियो फ़ाइल में एन्क्रिप्टेड 9MB .zip फ़ाइल और उसका फ़ाइल नाम शोर के रूप में संग्रहीत है।
... File-Injector % python3 main.py
[0] EXIT
[1] Inject file
[2] Extract file
Option: 1
File to be stored: images.zip
Filename of the base image: 2'2MP
Encrypt the file? (y/n): y
Do you want to use an existing key or generate a new one?
[0] Existing key
[1] New key
Option: 1
Filename of the new key file (blank for default):
Key generated and saved to files/$encryption-keys/key9.key
Preparing...
Modified bits per channel: 2
Image modification: 1.56%
✅ Storing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [100.0%]
Generating random values...
Storing random values...
Reshaping...
Modified image saved in files/modified-images/2'2MP_mod.png
Done in 7.5892 seconds
... File-Injector % python3 main.py
[0] EXIT
[1] Inject file
[2] Extract file
Option: 2
Filename of the modified image: 2'2MP_mod
Preparing...
Retrieving filename...
Retrieving input file...
Decrypted with "files/$encryption-keys/key2.key"
Output file saved in files/output-files/images.zip
Done in 1.4083 seconds
आप config.py फ़ाइल में कॉन्फ़िगरेशन बदल सकते हैं।
इंजेक्शन छवि/ऑडियो के सरणी को समतल करके बनाए गए सरणी के प्रत्येक तत्व के X कम महत्वपूर्ण बिट्स में फ़ाइल को संग्रहीत करके किया जाता है।
| विकल्प | विवरण |
|---|---|
| [0] EXIT | स्क्रिप्ट से बाहर निकलें |
| [1] Inject file | inject_file_func() को कॉल करता है |
| [2] Extract file | extract_file_func() को कॉल करता है |
inject_file_func()TEST_MODE == True, तो यह पूर्वनिर्धारित आधार छवि/ऑडियो और इनपुट फ़ाइल का उपयोग करेगा। अन्यथा, यह आधार छवि/ऑडियो और इनपुट फ़ाइल के लिए पूछेगा।get_fernet() के साथ कुंजी प्राप्त करेंinject_file() के साथ छवि/ऑडियो में फ़ाइल और फ़ाइल नाम इंजेक्ट करने का प्रयास करें।
extract_file_func()TEST_MODE == True, तो यह पूर्वनिर्धारित संशोधित छवि/ऑडियो का उपयोग करेगा। अन्यथा, यह संशोधित छवि/ऑडियो के लिए पूछेगा।extract_file() के साथ फ़ाइल और फ़ाइल नाम को बाइट्स के रूप में निकालेंgAAAAA से शुरू होते हैं), तो उन्हें decrypt_content से डिक्रिप्ट करेंget_fernet()| विकल्प | विवरण |
|---|---|
| [0] Existing key | मौजूदा कुंजी का उपयोग करें |
| [1] New key | एक नई कुंजी उत्पन्न करें |
[0] Existing key
files/$encryption-keys फ़ोल्डर से उपयोग करने के लिए एक कुंजी चुनें[1] New key
decrypt_content()files/$encryption-keys फ़ोल्डर में प्रत्येक कुंजी के लिए:
inject_file()संशोधित छवि/ऑडियो सरणी (np.ndarray, arr के समान आकार के साथ) लौटाता है
extract_file()| पैरामीटर | प्रकार | विवरण |
|---|---|---|
mod_arr_flat | np.ndarray | समतल संशोधित छवि/ऑडियो |
एक शब्दकोश लौटाता है जिसमें निकाले गए फ़ाइल और फ़ाइल नाम दोनों (बाइट्स) प्रारूप में होते हैं
| स्थिरांक | विवरण | डिफ़ॉल्ट मान |
|---|
MOD_PREFIX | संशोधित छवि/ऑडियो का उपसर्ग | "" |
MOD_SUFFIX | संशोधित छवि/ऑडियो का प्रत्यय | "_mod" |
STORE_RANDOM | संशोधित छवि में यादृच्छिक डेटा संग्रहीत करें ताकि संग्रहीत डेटा वाले भाग और बिना वाले भाग के बीच की सीमा इतनी स्पष्ट न हो | True |
TEST_MODE | परीक्षण मोड सक्षम/अक्षम करता है: पूर्वनिर्धारित छवियों/ऑडियो और फ़ाइलों के साथ परीक्षण करें | True |
| पैरामीटर | प्रकार | विवरण |
|---|
arr | np.ndarray | numpy सरणी के रूप में छवि/ऑडियो |
file | bytes | बाइट्स के रूप में फ़ाइल |
filename | bytes | बाइट्स के रूप में फ़ाइल नाम |
store_random | boolean | संशोधित छवि/ऑडियो में यादृच्छिक डेटा संग्रहीत करना है या नहीं |