عرض مشاركة واحدة
قديم 03-06-2008, 11:32 صباحاً   #111 (permalink)
عمر محمود هاني
:: البرمجة والتطوير ::
 
الصورة الرمزية عمر محمود هاني
 
تاريخ التسجيل: Jan 2007
الدولة: رابطة الجرافيك الدعوي - مش فاهم . كوم
المشاركات: 192
معدل تقييم المستوى: 6751عمر محمود هاني نشيطعمر محمود هاني نشيطعمر محمود هاني نشيطعمر محمود هاني نشيطعمر محمود هاني نشيطعمر محمود هاني نشيطعمر محمود هاني نشيطعمر محمود هاني نشيطعمر محمود هاني نشيطعمر محمود هاني نشيطعمر محمود هاني نشيط
رد: هل لديك سؤال في الفيجوال بيسك ؟ .. ادخل هنا


السلام عليكم ورحمة الله وبركاته

كيف الأحوال ؟
يا رب تكونوا في خير حال ..

أختنا سهاف :

وعليكم السلام ورحمة الله وبركاته
كيف الحال ؟
يا رب يكون عال العال .

---

سأنقل إليك ما أعرفه بشأن "Sténographie" .. وأرفق إليك المثال الذي أعرف :

اقتباس:
المشاركة الأصلية كتبت بواسطة [COLOR="Red"
أبو هاجر الحلوة[/color]]منتدى المنتدى

قسم لغات البرمجة

أبو هاجر الحلوة

الجزائر

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 و هو مصدر برنامج بالفجوال بيسك يستعمل نفس الخوارزم .

تم بحمد الله .
وبالمرفقات المثال - أتمنى أن يفيدك .


هذا أولاً من جهة الفيجوال بيسك - أما من ناحية تكامل الماتلاب مع الفيجوال بيسك فالحقيقة فأنا لا أدري ..

سأحاول أن أستفسر عن محاولة تضمين الفيجوال بيسك للماتلاب داخله ..


:××: كل الشكر - لأبو هاجر الحلوة - على جهده هذا وجزاه الله عني خيراً . :××:


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





من مواضيع عمر محمود هاني في المنتدى
نصائح مهمه
  1. إفحص الملف المرفق بأي برنامج مضاد للفيروسات
  2. قم بمراسلة المراقب عن أي مرفق يوجد به فيروس
  3. المنتدى غير مسوؤل عن مايحتويه المرفق من بيانات
الملفات المرفقة
نوع الملف: zipArArgonaut.zip‏ (54.1 كيلوبايت, المشاهدات 12)
__________________
(---) متغيّب في رمضان ..(---)

أسألكم الدعاء بظهر الغيب لي ولعموم المسلمين

"ما من عبد أنعم الله عليه نعمة فأسبغها عليه ، ثم جعل من حوائج الناس إليه فتبرم ؛ فقد عرض تلك النعمة للزوال"
حديث حسن .. صحيح الترغيب رقم 2618
"إن لله عند أقوام نعما أقرها عندهم ؛ ما كانوا في حوائج المسلمين ما لم يملوهم ، فإذا ملوهم نقلها إلى غيرهم"

حديث حسن لغيره .. صحيح الترغيب رقم 2616

((اللهم اجعلنا ممن تنعم عليهم ولا يملون))

www.msh-fahm.com


[/center][/center]

عمر محمود هاني متواجد حالياً   رد مع اقتباس