مقدمة إلي إخفاء المعلومات - الجزء الأول
في بعض الأوقات قد يحتاج المبرمج الي إخفاء بعض المعلومات و من ثم يستردها مرة أخري لكي يستخدمها كيفما يشاء من داخل برنامجه و في هذا الموضوع و علي أجزاء مختلفة سوف نناقش بعض الاساليب البسيطة التي من الممكن استخدامها لإخفاء المعلومات في لون أو في صورة أو في ملف من اي نوعالبيانات غالبا لها أشكال كثيرة فهي إما أن تكون علي هيئة تكست او جروف أو أرقام أو علي هيئة صور أو ملفات وكل هذه الاشكال من البيانات من الممكن تحويلها جميعا الي بايت
إخفاء حرف واحد فقط في صورة
الخطوات التالية توضح الكود مع تفسير لكل سطر في الكود
الخطوة الأولي : تحديد و تعريف الحرف
Dim chr As Char = "A"c
Dim b As Byte = Convert.ToByte(chr)
Dim clr As Color = Color.FromArgb(b, b, b, b)
Dim bmp As Bitmap = New Bitmap(20, 20)
Using g As Graphics = Graphics.FromImage(bmp)
g.Clear(clr)
End Using
و هنا انتهت المهمة و تم اخفاء الحرف في صورةg.Clear(clr)
End Using
إسترجاه الحرف من الصورة
الخطوة الأولي : نحدد اللون عن طريق تحديد بكسل تقع في نطاق وأبعاد الصورة
Dim pixColor As Color = bmp.GetPixel(10, 10)
الخطوة الثانية : الحصول علي قيمة الحرف مرة أخري
Dim result As Char = Convert.ToChar(pixColor.A)
ملاحظات
تستطيع التحكم في ابعاد الصورة كيفما شئنا لكن ابعادها لا يجب ان تقل عن 2 لأن هذا هو الرقم المعقول و الأسهل لك لكي تستطيع استخلاص البيانات من الصورة لاحقا
ليس شرطا عند تعريف اللون ان نستخدم نفس قيمة البايت التي تعير عن الحرف لتحديد قيمة الأحمر و الأخضر والأزرق
لكن شرطا ان قيمة ِالشفافية الخاصة باللون هي التي يجب أن تساوي قيمة البايت الخاصة بهذا الحرف
و السببب في ذلك ان قيمة الأحمر والأخضر والأزرق قد تتغير بدون أن تشعر بسبب ابعاد الصورة و تكوين البكسل نفسه لكن قيمة الشفافية ستظل ثابتة و لن تتغير مطلقا
في الصورة الحديثة اي صورة عادية قد تجد بها ما لايقل عن خمسة عشر الف لون و بعملية حسابية بسيطة تستطيع ان تخفي خمسة عشر الف حرف أو خمسة عشر الف بايت في داخل تلك الصورة
الخلاصة من الجزء الأول تنحصر في الدوال التالية التي من الممكن استخدامها لتحويل حرف الي صورة و العكس
Private Function ConvertCharToBitmap(chr As Char, Optional w As Integer = 2, Optional h As Integer = 2) As Bitmap
Dim bmp As Bitmap = New Bitmap(w, h)
Using g As Graphics = Graphics.FromImage(bmp)
g.Clear(Color.FromArgb(Convert.ToByte(chr), 0, 0, 0))
End Using
Return bmp
End Function
Private Function ConvertBitmapToChar(bmp As Bitmap, Optional x As Integer = 1, Optional y As Integer = 1) As Char
Return CType(Convert.ToChar(bmp.GetPixel(x, y).A), Char)
End Function
و الكود التالي يوضح كيفية استخدام الدوال أعلاه
حويل الحرف الي صورة
Dim bmp As Bitmap = ConvertCharToBitmap("D"c)
' الحصول علي الحرف و إظهار الحرف بشكل ما
Me.Text = ConvertBitmapToChar(bmp).ToString
' إظهار الصورة بشكل ما
Me.BackgroundImage = bmp
Comments
Post a Comment