المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : خوارزم لإخفاء النصوص داخل الصور



أبو هاجر الحلوة
20-03-2007, 01:35 PM
منتدى المنتدى
قسم لغات البرمجة
أبو هاجر الحلوة
الجزائر
2007


خوارزم لإخفاء النصوص داخل الصور

الـ Sténographie ( المصطلح بالفرنسية و لا أعرف المقابل الصحيح له بالإنجليزية) هي فن إخفاء المعلومة (عادة نصوص) داخل معلومة أخرى ( في أغلب الأحيان صورة أو ملف صوتي) دون تأثير ظاهر عليهما , هناك خوارزمات كثيرة و معروفة و هي متفاوتة من حيث درجة الصعوبة و مدى كفاءتها أي من السهل الساذج إلى غاية المعقد الفعال , و الخوارزم الذي سنتعرف عليه يقع بين هذين الطرفين و هو لأخفاء النصوص داخل الصور النقطية (Bitmap) من ناحية التأثير على الصورة فلا يكاد يذكر و من المستحيل على العين المجردة أن تدرك التغيير الذي يحدثه أما من ناحية النص المدرج فيمكن أن يكون هناك ضياع يسير جدا لبعض الحروف لكنه لا يكاد يذكر أيضا ففي رسالة معتبرة قد لا يتجاوز حجم الضياع الثلاث أو أربع حروف باختصار يمكن إعتبار هذا الخوارزم سهل و فعال إلى درجة كبيرة.

أولا : المتغيرات :

Buffer: المتغيرة التي تحوي النص و نظيف لها الحرف "#" لنتمكن من تحديد نهاية النص
Length : عدد حروف النص المراد إخفاءه (أي طول المتغيرة Buffer)
Bx : عرض الصورة التي نريد إخفاء الـ Buffer فيها
By : طول الصورة التي نريد إخفاء الـ Buffer فيها
iClr : متغيرة عددية سنستعملها لاسترجاع النقاط (Pixels) المكونة للصورة نقطة نقطة
ِِiChr : متغيرة نصية سنستعملها الاسترجاع الحروف المكونة للنص الذي نريد إخفاءه (أي النص الموجود في المتغيرة Buffer) أيضا حرفا حرفا
Px و Py : عددان لسبر كل النقاط المكونة للصورة

ثانيا : الخطوات :

1 - 1 / تشفير النص داخل الصورة:

من أجل اي نقطة M(Px,Py) في الصورة يكون ترتيبها أقل أو يساوي المتغيرة Length نقوم بما يلي :

نفكك النقطة M(Px,Py) (و التي هي عبارة عن لون) إلى الألوان الأساسية المكونة لها أي الأحمر و الأخضر و الأزرق (RGB) نقوم بتعريف ثلاث متغيرات عددية iRed , iGreen , iBlue لاسترجاع مكونات اللون حسب الترتيب RGB فإن الأوامر تكون كما يلي

في الدلفي



iRed := GetRValue(image.canvas.Pixels[Px, Py]);
iGreen := GetGValue(image.canvas.Pixels[Px,Py]);
iBlue := GetBValue(image.canvas.Pixels[Px,Py]);


أما في الفجوال بيسك



iRed = iClr Mod 256
iGreen = ((iClr And &HFF00) / 256&) Mod 256&
iBlue = (iClr And &HFF0000) / 65536


و من أجل أي حرف iChr من Buffer يكون ترتيبه هو نفس ترتيب النقطة M(Px,Py) التي قمنا بتفكيكها سابقا إلى ألوانها الأساسية نقوم بما يلي

نعدل قيمة اللون الأحمر الموجود في المتغيرة iRed كما يلي



iRed = iRed And 248 Or (iChr And 7)


ثم نعدل قيمة الأخضر كما يلي :



iGreen := iGreen and 248 or ((iChr and 56) shr 3);


هذا في الدلفي أما في الفجوال بيسك فنقوم بتغير الجزء shr 3 بـ / 8 لأن البيسك لا يوفر أوامر تتعامل مع المتغيرات على مستوى البت إلا أن النتيجة هي نفسها و بهذا سيكون الأمر السابق في البيسك كما يلي :



iGreen = iGreen And 248 Or ((iChr And 56) \ 8)


ثم نقوم بتعديل قيمة الأزرق

في الدلفي :



iBlue := iBlue and 252 or ((iChr and 192) shr 6);


و في البيسك :



iBlue = iBlue And 252 Or ((iChr And 192) \ 64)


في الأخير نقوم باسترجاع قيمة النقطة M(Px,Py) الجديدة باستعمال الدالة RGB إعتمادا على المكونات iRed , iGreen , iBlue التي حصلنا عليها سابقا ثم نعوضها في الصورة في نفس مكان النقطة القديمة
نكرر نفس العملية مع باقي النقاط حتى نقوم بتشفير جميع الحروف المكونة للنص ثم نقوم بحفظ الصورة بامتداد bmp

1 - 2 / استخراج النص المشفر داخل الصورة :

من أجل أي نقطة M(Px,Py) في الصورة حيث تتغير Px من 0 إلى Bx و Py تتغير من 0 إلى By و ما دام iChr يختلف عن القيمة "#" نقوم بما يلي :
نسترجع المكونات iRed , iGreen , iBlue كما سبق ثم نقوم باسترجاع الحرف iChr الموافق للنقطة كما يلي :
في الدلفي :



iChr := ((iBlue and 3) shl 6) or ((iGreen and 7) shl 3) or (iRed and 7);


و في البيسك :



iChr = ((iBlue And 3) * 64) Or ((iGreen And 7) * 8) Or (iRed And 7)


ملاحظات :

حتى تتمكن من تشفير كل النص في الصورة المختارة ينبغي أن تتحقق من الشرط التالي



Length <= Bx * By


أي أن طول النص يجب أن يكون أصغر أو يساوي حجم الصورة .

إذا تم الإخلال بهذا الشرط فيمكنك دائما حساب نسبة التشفير بالعلاقة :



((Bx * By) / Length) * 100


في المرفقات ستجد مصدر برنامج ArArgonaut و هو مصدر برنامج بالفجوال بيسك يستعمل نفس الخوارزم .
تم بحمد الله .

Argonaut
22-03-2007, 12:54 AM
رررروعة

5 من 5

(:

مش فاهم
01-04-2007, 05:43 AM
السلام عليكم ورحمة الله وبركاته
متميز والله يا أخي .
جزاكم الله خيراً :)

تحياتي
أبو عبد الله ـ عمر محمود هاني ـ

أبو هاجر الحلوة
04-04-2007, 05:03 AM
أبو عبد الله ـ عمر محمود هاني ـ


إذا كان التوقيع هو نفسه فأعتقد أن التميز كل التميز لمن يستطيع أن يجمع بين البرمجة على صرامتها و اللغة على اتساعها
شرفني مرورك أيها الأخ الكريم و أتمنى أن أرى بعض أعمالك في هذا المنتدى
وفقك الله

عمر
07-04-2007, 06:08 PM
:):):)

السلام عليكم

قرأت عن هذه التقنية قبل فتره في جريدة (الشرق الأوسط) ..
وفكرت في أن أعمل برنامج لها .. لكن طلعت إنت سابقني ..

وأنا لقيت فكرة حلوة قبل أيام .. ما تحتاج برنامج

سوي Shortcut لرابط أنترنت ..
إفتحه بواسطة Notepad .. رح تلقى متغيرات وكتابات .. بعدها أكتب اللي تريده .. وما أحد يلاحظ هذا .. ولا يتأثر الرابط أصلا :):):)

وعلى فكرة هذه الطريقة يستخدمها الجواسيس!

شكرا لك


بالتوفيق
:):):)

أبو هاجر الحلوة
07-04-2007, 07:12 PM
فعلا فكرة سهلة و حلوة :biggthump لكنها سهلة فأي شخص فظولي يستطيع فتح الاختصار و الإطلاع على الرسالة
أعرف طريقة تشبهها ولكني لم أجربها قم بفتح أي ملف Bitmap بمحرر ثنائي و اضف الرسالة في آخره لن تتأثر الصورة و يمكنك فتحها بأي مستعرض صور.

لكن الخلل في هذا النوع من الطرق أنها تزيد في حجم الملف مما يمكن أن يثير الإنتباه كما يمكن إستخراج الرسالة بكل سهولة على عكس الخوارزم المذكور أعلاه فهو لا يغير شيئا في حجم الملف و لا يمكن إستخراج الرسالة إلا ببرنامج يستعمل نفس الخوارزم و هو أمر مستعبد

أما هل يستعملها الجواسيس أم لا فلا يهم المهم أن نتمكن من كل أسرارالبرمجة مهما كانت قدر المستطاع ثم نقوم بنقل ما نعرفه إلى ألآخرين فربما مع الوقت سيتمكن الشباب المؤهل من الوقوف بالبرمجة العربية و الخروج من هذا الوضع المتردي الذي نعرفه

عمر
07-04-2007, 09:29 PM
لكنها سهلة فأي شخص فظولي يستطيع فتح الاختصار و الإطلاع على الرسالة

صحيح ..
ولكن! .. تكتب فضولي وليس فظولي!


لا يغير شيئا في حجم الملف و لا يمكن إستخراج الرسالة إلا ببرنامج يستعمل نفس الخوارزم و هو أمر مستعبد
!! .. لم أعرف .. فكرة حلوة وجميلة جدا .. شكرا لك :) ..


أما هل يستعملها الجواسيس أم لا فلا يهم
صحيح .. 100%

أبو هاجر الحلوة
07-04-2007, 11:06 PM
مشكور على التصحيح :bigeyes: سأحفظها للمستقبل

فيما يخص مقال الشرق الأوسط إذا كان يتكلم عن خوارزم التشفير فهل بالإمكان أن تنقله لنا هنا لأن هناك عدة خوارزمات مستعملة في هذه التقنية زيادة للفائدة

شكرا مرة أخرى

mohamed.dz
09-02-2008, 11:25 AM
السلام عليكم ورحمة الله وبركاته
شكرا لك أخي أبو هاجر الحلوة على الخوارزم الرائع
أردت أن أشارك بهذا البرنامج في المرفقات
وهو عبارة عن تطبيق لهذا الخوارزم بلغة دلفي

تقبلوا أغلى تحياتي ... والسلام عليكم

hasan ahmad
16-04-2008, 07:17 PM
ارجو شرح الخوارزم نفسه
و كيف تعمل المعادلة

أبو هاجر الحلوة
11-06-2008, 03:01 AM
تطبيق لهذا الخوارزم بلغة دلفي


ممتاز جربت التطبيق و هو يعمل بصفة جيدة...........لكني للأسف لم أطلع على المصدر لأن الدلفي غير مثبت حاليا على جهازي.


إهتم بشكل الواجهة و إجعل البرنامج هو من يقوم بإدراج رمز نهاية الرسالة بدل المستعمل و سيكون 10/10 .............بالتوفيق بعون اللهhttp://file9.9q9q.net/preview/26617952/Sans-titre.bmp.html

أبو هاجر الحلوة
11-06-2008, 03:31 AM
ارجو شرح الخوارزم نفسه
و كيف تعمل المعادلة

طلب مشروع و في الصميم ......إن شاء بعد الفراغ من بعض المشاغل ستكون لي عودة للموضوع...
ما يمكن أن أقوله الآن هو أن الـ Sténographie تقوم على مبدأ التأثير على الـ Bits الضعيفة لهذا لا يظهر التغيير على الأصل لأن حجم ضياع المعلومات يكون ضئيلا جدا.

أبحث في الجوجل عن الـ Sténographie أو الـ Stenography و ستجد كما هائلا من المعلومات و الخوارمات المتعلقة بالموضوع

love whisper007
07-11-2008, 01:37 AM
مشكووووووووووووور باااارك الله فيك

L A H B
07-11-2008, 07:33 PM
موضوووووووووووووووووووووع
جميييييييييييييييييييييييييييييييييييييييييييييل
مميييييييييييييييييييييييييييييييييييييييييييييييييييز
مفييييييييييييييييييييييييييييييييييييييييييييييييييييييييييد