
أقل بت ذي دلالة لإخفاء المعلومات في الصور النقطية (.bmp و .png)، وملفات الصوت WAV، وتسلسلات البايت. تحليل بسيط لإخفاء المعلومات بطريقة LSB (استخراج LSB) للصور النقطية.

إذا كنت غير ملم بتقنيات إخفاء المعلومات، فقد كتبت أيضًا نظرة عامة أساسية عن المجال في Steganography: Hiding Data Inside Data.
هذا المشروع موجود على PyPI ويمكن تثبيته باستخدام
pip install stego-lsb
بدلاً من ذلك، يمكنك تثبيته مباشرة من هذا المستودع:
git clone https://github.com/ragibson/Steganography
cd Steganography
python3 setup.py install
بعد التثبيت، استخدم الأمر stegolsb في الطرفية أو استورد
الدوال من stego_lsb في الكود الخاص بك.
توفر bit_manipulation القدرة على (بسرعة) تداخل بايتات المحتوى المخفي
مباشرة في البتات الأقل أهمية لتسلسل بايتات الناقل.
بشكل محدد، تحتوي على أربع دوال رئيسية:
# Interleave the bytes of payload into the num_lsb LSBs of carrier.
lsb_interleave_bytes(carrier, payload, num_lsb, truncate=False)
# Deinterleave num_bits bits from the num_lsb LSBs of carrier.
lsb_deinterleave_bytes(carrier, num_bits, num_lsb)
# Runs lsb_interleave_bytes with a List[uint8] carrier.
lsb_interleave_list(carrier, payload, num_lsb)
# Runs lsb_deinterleave_bytes with a List[uint8] carrier.
lsb_deinterleave_list(carrier, num_bits, num_lsb)
تشغيل bit_manipulation.py، أو استدعاء دالة test() فيه مباشرة، أو
تشغيل stegolsb test يجب أن ينتج مخرجات مشابهة لما يلي:
Testing 1.0 MB payload -> 10.0 MB carrier...
Progress: [################################]
----------------------------------------
| # LSBs | Encode Rate | Decode rate |
| 1 | 60.6 MB/s | 95.9 MB/s |
| 2 | 56.6 MB/s | 52.7 MB/s |
| 3 | 82.5 MB/s | 77.4 MB/s |
| 4 | 112.4 MB/s | 105.9 MB/s |
| 5 | 135.9 MB/s | 129.8 MB/s |
| 6 | 159.9 MB/s | 152.4 MB/s |
| 7 | 181.7 MB/s | 174.6 MB/s |
| 8 | 372.8 MB/s | 1121.8 MB/s |
----------------------------------------
يستخدم WavSteg إخفاء المعلومات بالبت الأقل أهمية لإخفاء ملف في عينات ملف .wav.
لكل عينة في ملف الصوت، نستبدل البتات الأقل أهمية ببيانات ملفنا.
يتطلب WavSteg بايثون 3
قم بتشغيل WavSteg مع وسائط سطر الأوامر التالية:
Command Line Arguments:
-h, --hide To hide data in a sound file
-r, --recover To recover data from a sound file
-i, --input TEXT Path to a .wav file
-s, --secret TEXT Path to a file to hide in the sound file
-o, --output TEXT Path to an output file
-n, --lsb-count INTEGER How many LSBs to use [default: 2]
-b, --bytes INTEGER How many bytes to recover from the sound file
--help Show this message and exit.
مثال:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 1
# OR
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 1 -b 1000
يستخدم إخفاء البيانات الوسائط -h و -i و -s و -o و -n.
الأمر التالي سيخفي محتويات file.txt في sound.wav ويحفظ النتيجة كـ sound_steg.wav. كما يخرج الأمر عدد البايتات المستخدمة من أقصى حد نظري.
مثال:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 2
Using 2 LSBs, we can hide 6551441 bytes
Files read in 0.01s
5589889 bytes hidden in 0.24s
Output wav written in 0.03s
إذا حاولت إخفاء كمية كبيرة جدًا من البيانات، سيقوم WavSteg بطباعة أقل عدد من LSBs اللازم لإخفاء بياناتك.
يستخدم استرداد البيانات الوسائط -r و -i و -o و -n و -b.
الأمر التالي سيقوم باستعادة البيانات المخفية من sound_steg.wav ويحفظها كـ output.txt. يتطلب ذلك أن يكون حجم البيانات المخفية بالبايت دقيقًا، وإلا فقد تكون النتيجة قصيرة جدًا أو تحتوي على بيانات زائدة.
مثال:
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 2 -b 5589889
Files read in 0.02s
Recovered 5589889 bytes in 0.18s
Written output file in 0.00s
يستخدم LSBSteg إخفاء المعلومات بالبت الأقل أهمية لإخفاء ملف في معلومات اللون لصورة RGB (.bmp أو .png).
لكل قناة لون (مثل R و G و B) في كل بكسل من الصورة، نستبدل البتات الأقل أهمية من قيمة اللون ببيانات ملفنا. لتسهيل استرداد هذه البيانات، نخفي أيضًا حجم ملف الإدخال في القنوات اللونية الأولى للصورة.
تحتاج إلى Python 3 و Pillow، وهي شوكة من مكتبة Python Imaging Library (PIL).
قم بتشغيل LSBSteg مع وسائط سطر الأوامر التالية:
Command Line Arguments:
-h, --hide To hide data in an image file
-r, --recover To recover data from an image file
-a, --analyze Print how much data can be hidden within an image [default: False]
-i, --input TEXT Path to an bitmap (.bmp or .png) image
-s, --secret TEXT Path to a file to hide in the image
-o, --output TEXT Path to an output file
-n, --lsb-count INTEGER How many LSBs to use [default: 2]
-c, --compression INTEGER RANGE
1 (best speed) to 9 (smallest file size) [default: 1]
--help Show this message and exit.
مثال:
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
# OR
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
# OR
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
قبل إخفاء البيانات في صورة، قد يكون من المفيد معرفة كمية البيانات التي يمكن إخفاؤها. الأمر التالي سيقوم بذلك، منتجًا مخرجات مشابهة لما يلي:
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
Image resolution: (2000, 1100, 3)
Using 2 LSBs, we can hide: 1650000 B
Size of input file: 1566763 B
File size tag: 3 B
الأمر التالي سيخفي البيانات في الصورة المدخلة ويكتب النتيجة إلى الصورة المخفية، منتجًا مخرجات مشابهة لما يلي:
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
Files read in 0.26s
1566763 bytes hidden in 0.31s
Image overwritten in 0.27s
الأمر التالي سيقوم باستعادة البيانات من الصورة المخفية ويكتب النتيجة إلى ملف الإخراج، منتجًا مخرجات مشابهة لما يلي:
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
Files read in 0.30s
1566763 bytes recovered in 0.28s
Output file written in 0.00s
يوفر StegDetect طريقة واحدة للكشف عن الإخفاء البسيط في الصور.
تحتاج إلى Python 3 و Pillow، وهي شوكة من مكتبة Python Imaging Library (PIL).
قم بتشغيل StegDetect مع وسائط سطر الأوامر التالية:
Command Line Arguments:
-i, --input TEXT Path to an image
-n, --lsb-count INTEGER How many LSBs to display [default: 2]
--help Show this message and exit.
نجمع أقل n بت من قنوات RGB اللونية لكل بكسل ونطبع النتيجة إلى النطاق 0-255. ثم يتم تطبيق هذه القيمة على كل قناة لون للبكسل. حيث n هو عدد البتات الأقل أهمية التي سيتم عرضها، الأمر التالي سيحفظ الصورة الناتجة، مضيفًا "_nLSBs" إلى اسم الملف، وسيخرج مخرجات مشابهة لما يلي:
$ stegolsb stegdetect -i input_image.png -n 2
Runtime: 0.63s