06-01-17, 05:05 AM
(آخر تعديل لهذه المشاركة : 06-01-17, 05:15 AM {2} بواسطة silverlight.)
في بعض الأوقات قد يحتاج المبرمج الي إخفاء بعض المعلومات و من ثم يستردها مرة أخري لكي يستخدمها كيفما يشاء من داخل برنامجه
و في هذا الموضوع و علي أجزاء مختلفة سوف نناقش بعض الاساليب البسيطة التي من الممكن استخدامها لإخفاء المعلومات في لون أو في صورة أو في ملف من اي نوع
البيانات غالبا لها أشكال كثيرة فهي إما أن تكون علي هيئة تكست او أرقام أو علي هيئة صور
وكل هذه الاشكال من البيانات من الممكن تحويلها جميعا الي بايت
إخفاء حرف واحد فقط في صورة
الخطوات التالية توضح الكود مع تفسير لكل سطر من الكود
1- تحديد الحرف
2- تحويل هذا الحرف الي بايت
3- تعريف متغير عبارة عن لون Color و هذا باستخدام قيمة البايت في الخطوة الثانية
4- تعريف صورة بابعاد مناسبة و هنا سوف اقوم ببناء صورة صغيرة ابعادها متساوية
5- الأن نملأ الصورة باللون من الخطوة الرابعة وهذا يتم باستخدام الجرافكس
و هنا انتهت المهمة و تم اخفاء الحرف في صورة
إسترجاع الحرف من الصورة
1- باستخدام GetPixel نحدد اللون و هنا يجب ان تكون قيمة البكسل التي نختارها في داخل حدود الصورة
2- الحصول علي قيمة الحرف مرة أخري
ملاحظات:
1- تستطيع التحكم في ابعاد الصورة كيفما شئت لكن ابعادها لا يجب ان تقل عن 2 لأن هذا هو الرقم المعقول و الأسهل لك لكي تستطيع استخلاص البيانات من الصورة لاحقا
2- ليس شرطا عند تعريف اللون ان نستخدم نفس قيمة البايت التي تعير عن الحرف لتحديد قيمة Red , Green , Blue
لكن شرطا ان قيمة ِAlpha الخاصة باللون هي التي يجب أن تساوي قيمة البايت الخاصة بهذا الحرف
و السببب في ذلك ان قيمة Red , Green , Blue قد تتغير بدون أن تشعر بسبب ابعاد الصورة و تكوين البكسل نفسه
لكن قيمة Alpha ستظل ثابتة و لن تتغير مطلقا
3- في الصورة الحديثة اي صورة عادية قد تجد بها ما لايقل عن خمسة عشر الف لون و بعلية حسابية بسيطة تستطيع ان تخفي خمسة عشر الف حرف أو خمسة عشر الف بايت في داخل تلك الصورة
و في هذا الموضوع و علي أجزاء مختلفة سوف نناقش بعض الاساليب البسيطة التي من الممكن استخدامها لإخفاء المعلومات في لون أو في صورة أو في ملف من اي نوع
البيانات غالبا لها أشكال كثيرة فهي إما أن تكون علي هيئة تكست او أرقام أو علي هيئة صور
وكل هذه الاشكال من البيانات من الممكن تحويلها جميعا الي بايت
إخفاء حرف واحد فقط في صورة
الخطوات التالية توضح الكود مع تفسير لكل سطر من الكود
1- تحديد الحرف
PHP كود :
Dim chr As Char = "A"c
2- تحويل هذا الحرف الي بايت
PHP كود :
Dim b As Byte = Convert.ToByte(chr)
3- تعريف متغير عبارة عن لون Color و هذا باستخدام قيمة البايت في الخطوة الثانية
PHP كود :
Dim clr As Color = Color.FromArgb(b, b, b, b)
4- تعريف صورة بابعاد مناسبة و هنا سوف اقوم ببناء صورة صغيرة ابعادها متساوية
PHP كود :
Dim bmp As Bitmap = New Bitmap(20, 20)
5- الأن نملأ الصورة باللون من الخطوة الرابعة وهذا يتم باستخدام الجرافكس
PHP كود :
Using g As Graphics = Graphics.FromImage(bmp)
g.Clear(clr)
End Using
و هنا انتهت المهمة و تم اخفاء الحرف في صورة
إسترجاع الحرف من الصورة
1- باستخدام GetPixel نحدد اللون و هنا يجب ان تكون قيمة البكسل التي نختارها في داخل حدود الصورة
PHP كود :
Dim pixColor As Color = bmp.GetPixel(10, 10)
2- الحصول علي قيمة الحرف مرة أخري
PHP كود :
Dim result As Char = Convert.ToChar(pixColor.A)
ملاحظات:
1- تستطيع التحكم في ابعاد الصورة كيفما شئت لكن ابعادها لا يجب ان تقل عن 2 لأن هذا هو الرقم المعقول و الأسهل لك لكي تستطيع استخلاص البيانات من الصورة لاحقا
2- ليس شرطا عند تعريف اللون ان نستخدم نفس قيمة البايت التي تعير عن الحرف لتحديد قيمة Red , Green , Blue
لكن شرطا ان قيمة ِAlpha الخاصة باللون هي التي يجب أن تساوي قيمة البايت الخاصة بهذا الحرف
و السببب في ذلك ان قيمة Red , Green , Blue قد تتغير بدون أن تشعر بسبب ابعاد الصورة و تكوين البكسل نفسه
لكن قيمة Alpha ستظل ثابتة و لن تتغير مطلقا
3- في الصورة الحديثة اي صورة عادية قد تجد بها ما لايقل عن خمسة عشر الف لون و بعلية حسابية بسيطة تستطيع ان تخفي خمسة عشر الف حرف أو خمسة عشر الف بايت في داخل تلك الصورة