
File Injector هو سكربت يتيح لك تخزين أي ملف داخل صورة باستخدام تقنية إخفاء البيانات (Steganography).
File Injector هو سكربت يتيح لك تخزين أي ملف (.zip، .png، .txt، .gba...) مع اسمه في صورة/صوت على شكل ضوضاء، باستخدام إخفاء البيانات (Steganography).
يمكنك أيضًا اختيار تشفير ملف الإدخال قبل تخزينه.
ثم، لـاستخراج الملف من الصورة/الصوت المعدّل، لست بحاجة إلى الصورة/الصوت الأصلي، فقط مفتاح التشفير إذا كان الملف قد تم تشفيره.
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 على ملف .zip مشفّر بحجم 9MB مع اسمه مخزّنًا كضوضاء.
<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/HEAD/readme-assets/17"1MP_mod.png" width=500>
تحتوي هذه الصورة بدقة 1.7MP على ملف .zip مشفّر بحجم 0.93MB مع اسمه مخزّنًا كضوضاء.
<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/HEAD/readme-assets/1"7MP_mod.png" width=500>
يحتوي هذا الملف الصوتي بحجم 42MB على ملف .zip مشفّر بحجم 9MB مع اسمه مخزّنًا كضوضاء.
... 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_contentget_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 | الصورة/الصوت المعدّل المُسطّح |
يرجع قاموسًا يحتوي على الملف واسم الملف المستخرجين، وكلاهما بصيغة (bytes)
| الثابت | الوصف | القيمة الافتراضية |
|---|
MOD_PREFIX | البادئة التي ستحملها الصورة/الصوت المعدّل | "" |
MOD_SUFFIX | اللاحقة التي ستحملها الصورة/الصوت المعدّل | "_mod" |
STORE_RANDOM | تخزين بيانات عشوائية في الصورة المعدّلة بحيث لا يكون الحد الفاصل بين الجزء الذي يحتوي البيانات المخزّنة والجزء الذي لا يحتويها واضحًا جدًا | True |
TEST_MODE | تفعيل/تعطيل وضع الاختبار: الاختبار بصور/صوتيات وملفات معرّفة مسبقًا | True |
| المعامل | النوع | الوصف |
|---|
arr | np.ndarray | الصورة/الصوت كمصفوفة numpy |
file | bytes | الملف كبايتات |
filename | bytes | اسم الملف كبايتات |
store_random | boolean | ما إذا كان سيتم تخزين بيانات عشوائية في الصورة/الصوت المعدّل أم لا |